Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

,

目次

...

Table of Contents
minLevel1
maxLevel4

...

参考:https://dev-partner.i-pro.com/space/TPFAQ/1172766733/ADAM_CamPref_Get()で取得可能なYC解像度一覧

カメラの上下反転設定に対応するための実装

カメラの画像反転・上下反転設定を使用する場合、アプリが取得するYC画像は自動では反転されず、アプリ内で反転処理を実装する必要があります。CV2xカメラの画像回転・上下反転設定を使用する場合、アプリが取得するYC画像は自動では反転されず、アプリ内で反転処理を実装する必要があります。

また一部のCV2xカメラ(ボックスタイプ、ドームタイプ)では、上下反転設定にかかわらず、画像センサの取付け向きの関係で、アプリが取得可能なYC画像がデフォルト状態で反転しています。以下のページを参考にYC画像取得後の反転処理を実装して下さい。

https://dev-partner.i-pro.com/space/TPFAQ/965477999/カメラの取り付け向きと取得YC画像について

...

この実装はSDK v2.01以降に同梱されているサンプルアプリケーションweb_template_app, yuv_dnn_app,
yuv_pose_ap, yuv_ssd_app, yuv_yolo_app,yuv_yolov5_app,yuv_yolov8_appで実装されています。

関連FAQ: https://dev-partner.i-pro.com/space/TPFAQ/724078720/SシリーズBOXカメラのAIモデル精度

全方位カメラの映像取得

撮像モード設定に応じて、魚眼画像、パノラマ画像など所望の画像をアプリで使用することが可能です。

...

マルチセンサカメラでは、アプリをインストール時、インストール対象のカメラNo(No.1~No.4)を選択してインストールします。アプリが取得するYC画像はADAM_DevYcVideo_Createでは自動でそのカメラNoの映像が取得されます。ADAM_DevRawVideo_Create使用時は引数に応じて自動または特定のカメラNoの映像を指定することが可能です。

また例えばアプリのWEB画面でそのカメラNoの映像を表示する場合は、また、例えばアプリのWEB画面でそのカメラNoの映像を表示する場合は、Adam_GetSensorChannelでそのアプリがインストールされているカメラNoを取得後、映像配信のCGIを使用してください。GetSensorChannelでそのアプリがインストールされているカメラNoを取得後、映像配信のCGIを使用してください。

(ex. /cgi-bin/mjpeg?ch=2, /cgi-bin/mjpeg?ch=3, /cgi-bin/mjpeg?ch=4)

この実装はサンプルアプリケーションweb_template_appで実装されています。

またYC画像のフレームレートに制限があります。また、YC画像のフレームレートに制限があります。

 2M / 4Mタイプ: 最大15 fps

 6M  5M / 6M / 4Kタイプ: 最大7.5 fps

AI処理の一般的な処理シーケンス例

...

ADAM_DevInputAlarm_CreateはPython版のアプリでは非対応です。

外部機器へのデータ送信方法

...

アプリ内で発生したイベントはSDKを使用してカメラファームウェアのアラーム連動動作機能を動作させたり、またはアプリから外部機器に対して直接通信することもがです。アプリ内で発生したイベントはSDKを使用してカメラファームウェアのアラーム連動動作機能を動作させたり、またはアプリから外部機器に対して直接通信することも可能です。

ADAM_Alarm_Notify

カメラファームウェアの以下のようなアラーム連動動作を開始させることが可能です。

...

RTSPのメタデータチャンネルで、Onvif meta streamとしてデータの送信が可能です。本データを活用するソフトはパートナー様で開発頂く必要があります。※海外ページではiAG連携の補足説明する

※本SDKは各種サンプルアプリmeta_stream_app、web_template_appで実装されています。

...

アプリケーションからカメラファームウェアのHTTPポートに対してローカル通信としてCGIを実行することが可能です。ユーザー認証が必要となるため、カメラのユーザー名、パスワードをアプリケーションの設定値として実装する必要があります。

ローカル通信時に必要となるカメラのHTTPポート番号設定は ADAM_GetHttpInfo で取得することができます。

CGIドキュメントダウンロード:https://i-pro.com/products_and_solutions/ja/surveillance/learning-and-support/device-integration/cgi-itg-camera

...

ADAM_GetAppDataDirPathで取得されるディレクトリに対して保存したデータはカメラ内部のフラッシュメモリに保存されるため、カメラの電源をOff/Onを行っても保存されます。

フラッシュメモリには書き込み回数に上限があるため、映像から検知したデータなどを保存したい場合は、SDカードまたは外部装置へ送信して保存する必要があります。

一時的なRAMへの保存で十分の場合は、一時的なRAMへの保存で十分の場合は、RAMの上限を超えない範囲でADAM_GetAppTmpDirPathをで取得されるディレクトリに保存してください。で取得されるディレクトリに保存してください。

高頻度のフラッシュメモリへの書き込みが行われ劣化した場合、アプリのインストール、起動、その他アプリの動作に影響を及ぼす場合があります。

SDK 2.01以降のResouce Monitorでは、フラッシュメモリへのアクセス状況を確認可能です。不要なアクセスがないかどうか、開発中にご確認ください。

参考:https://dev-partner.i-pro.com/space/TPFAQ/1028163220/Resource+Monitor

また各カメラのROMサイズの上限を超えて、保存が行われた場合、カメラのファームウェアがアプリを停止します。この場合、カメラのWEBブラウザの管理ログに「不正終了また、各カメラのROMサイズの上限を超えて、保存が行われた場合、カメラのファームウェアがアプリを停止します。この場合、カメラのWEBブラウザの管理ログに「不正終了(ROM容量制限(実容量))」が表示されます。

RAMの活用

ADAM_GetAppTmpDirPathをで取得されるディレクトリに一時的にデータを格納することが可能です。

各カメラのRAMサイズの上限を超えて使用された場合、カメラのファームウェアがアプリを停止します。この場合、カメラのWEBブラウザの管理ログに「不正終了(RAM容量制限)」が表示されます。

また、ADAM_GetAppTmpDirPathで取得されるディレクトリに一時的にデータを格納することが可能です。

この場合も上限を超えないようにご使用下さい。

リソース情報の取得方法

開発中はSDK同梱のResouce Monitorで確認可能です。

...

  1. Adam WebAPI getAppResourceInfo

  2. /proc/[pid]/statusや/proc/[pid]/statmで取得

  3. ADAM_GetRomRamSize *SDK v2.01以降で対応

SDメモリーカードの活用

...

カメラ設定画面の[基本]-[SDメモリーカード]-[機能拡張ソフトウェアモード]を[On]にすることで、アプリからSDカードに対してデータを書き込むことが可能です。ディレクトリはADAM_GetSdCardPathで取得可能です。

外部ライブラリSQLiteを使用して、SDメモリーカードへデータベースを構築することも可能です。サンプルアプリsqlite_appで実装されています。

[SDメモリーカードファイルシステム]設定を[FAT]で使用する場合、カメラファームウェアによるSDメモリーカードへの録画機能は動作しますが、保証できません。

[SDメモリーカードファイルシステム]設定を[ext]で使用する場合、カメラファームウェアによるSDメモリーカードへの録画機能は動作しません。


SDメモリーカードには書き込み回数の上限があります。詳細はメーカーの情報を参照ください。

WEB UIの実装

...

アプリでWEB UIを自由に実装し、カメラのWEBブラウザから表示することが可能です(ex. MJPEGと検知枠の表示、アプリの設定変更など)

WEB UIは各種サンプルアプリでも実装されており、またweb_template_appでは、一般的にアプリに必要なる機能が含まれています。appでは、一般的にアプリに必要となる機能が含まれています。

アプリのライセンスアクティベーションが必要となる場合、これらはすべてパートナー様で設計、実装頂く必要があります。カメラのMACアドレスやシリアル番号はSDKで取得可能であり、ご使用下さい。

...

複数のAIモデル及び複数アプリの活用

...

1つのアプリに複数のAIモデルを組み込み、動作させることが可能です。

またアプリを複数にわけ、アプリ間での通信を行う場合は、サンプルアプリiacまた、アプリを複数にわけ、アプリ間での通信を行う場合は、サンプルアプリiac_server_sample_app、iac_client_sample_appを参照ください。

...

連続2回アプリからの応答がなかった場合、アプリが異常になっていると判定し、ファームウェアはアプリを停止します。その後、そのアプリがスケジュール動作期間内である場合は、再度自動的に起動します。

また外部装置からのAdamCGIまた、外部装置からのAdamCGI(WEB API)を受信し、アプリがファームウェアに対して応答を返却しない場合も同様に停止、再起動が行われます。アプリ内の別のスレッドを死活監視対象に追加したい場合は、を受信し、アプリがファームウェアに対して応答を返却しない場合も同様に停止、再起動が行われます。例えば、アプリで受信パラメータに対するチェックを行い、異常と判断した場合にもADAM_ServerResponse_SendまたはADAM_ServerResponse_SendAsIsでファームウェアに対する応答を実装する必要があります。

また、アプリ内の別のスレッドを死活監視対象に追加したい場合は、ADAM_KeepAlive_Addをご使用下さい。

...

#ifdef ADAM_TARGET_PF_ipro_ambaCV5X_linuxまたSDK2

SDK v2.01以降に同梱されているサンプルアプリケーションweb_template_app, yuv_dnn_app, yuv_pose_ap, yuv_ssd_app, yuv_yolo_app,yuv_yolov5_app,yuv_yolov8_appで実装されています。

また、SDK2.01以降に対応したファームウェアバージョンで追加されたSDK ADAM_GetSocTypeでSoCの情報を取得し、動的に制御を分けることも可能です。

...