開発用aicapコマンド

Contents

1

はじめに

実際に独自の検知プログラムを開発する際、Raspberry Pi上ではなく、開発環境が入ったPC(Linux/Windows/Mac)上で開発を行うことが多いと思います。
そうしたPC上の開発環境上でaicapコマンドを実行する為のスタブモジュールを用意してあります。

このスタブモジュール(開発用aicapコマンド)は、コマンド引数などは、AIBOX OSに搭載されているaicapコマンドと同じなので、パスが通る場所に配置すれば、PC上で独自の検知プログラムを開発することが可能になります。

開発用aicapコマンドは、開発用PCにUSB接続されたWebカメラを使用し、Push通知の送信画像やJson文字列は、指定したローカルディレクトリに保存されます。

注意事項

開発用aicapコマンドはFFmpegを使用しますので、開発環境にインストールしてください。

2

インストール方法

開発用aicapコマンドのインストール手順を説明します。

コマンド実行に必要な設定ファイル(aicap.conf)の作成方法は、次のステップで環境毎に説明します。

1開発環境にffmpegをインストール

開発環境にあったFFmpegをインストールしてください。
インストール方法は他の情報を参照してください。

2環境にあったaicapモジュールを開発環境にダウンロード

GitHubに公開されている開発用aicapコマンドの中から、環境にあったものをダウンロードしてください。

GitHub aicap for development

3UVCカメラを開発環境に接続

開発環境のUSBポートに、UVCカメラを接続してください。

4設定ファイルを作成

開発用aicapコマンド用の設定ファイルを作成します。
作成手順は次のステップで説明します。

5パスを通す

aicapコマンドをそのまま実行できるように、開発用aicapコマンドを配置した場所までのパスを設定します。
システムのパスに追加してもOKですが、VisualStudio Codeを使用している場合は、launch.jsonenvにPATHを追加することでコマンドを実行できます。


{
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Python Debugger: Current File",
            "type": "debugpy",
            "request": "launch",
            "program": "extmod.py",
            "console": "integratedTerminal",
            "args": [],
            "env": {
                "MODEL_FILE_NAME" : "yolo11m.pt",
                "PREVIEW_IMAGE_PATH" : "C:/Users/yukio/Desktop/temp/result.jpg",

                // WindowsのPATHの区切りは [;]
                // Linux/Macは [:]
                "PATH": "${env:PATH};C:/Users/yukio/work"
            }
        }
    ]
}                        
3

設定ファイルの作成

開発用aicapコマンドを使用するには、設定ファイルを作成する必要があります。

設定ファイルは、開発用aicapコマンドと同じ場所に、aicap.confの名前で作成してください。

フォーマットはJSONで、パラメータは以下の2つです。


{
    "VideoCaptureDevice" : [USB接続Webカメラの接続情報],
    "PushResultOutputPath" : [Pushコマンドに指定した画像/JSON情報の保存先ディレクトリ]
}           
            

VideoCaptureDeviceは、環境ごとに取得・設定方法が異なりますので、それぞれの環境での情報の取得方法と設定方法を説明します。

1Linuxの場合

V4L2(Video for Linux2)が入っていなければインストール。(sudo apt install v4l2-utils)

v4l2-ctl --list-devicesで、接続したUVCカメラのデバイスパスを表示

情報表示
$ v4l2-ctl --list-devices Microsoft® LifeCam HD-3000: Mi (usb-0000:00:0b.0-1): /dev/video0 /dev/video1

番号の若い方を設定します。(上記の場合、/dev/video0)


{
    "VideoCaptureDevice" : "/dev/video0",
    "PushResultOutputPath" : "/home/user/work/temp"
}
                        

2Windowsの場合

コマンドプロンプトで「ffmpeg -list_devices true -f dshow -i dummy」を入力

情報表示
$ ffmpeg -list_devices true -f dshow -i dummy [dshow @ 000002d291eebb80] "HD Webcam eMeet C960" (video) [dshow @ 000002d291eebb80] Alternative name "@device_pnp_\\?\usb#vid_328f&pid_2013&mi_00#7&39fbeec7&0&0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" [dshow @ 000002d291eebb80] "マイク (HD Webcam eMeet C960)" (audio) [dshow @ 000002d291eebb80] Alternative name "@device_cm_{33D9A762-90C8-11D0-BD43-00A0C911CE86}\wave_{44545183-13C6-4A8E-A80C-20BD4E517837}"

videoデバイスの名前を設定します。(上記の場合、HD Webcam eMeet C960)


{
    "VideoCaptureDevice" : "HD Webcam eMeet C960",
    "PushResultOutputPath" : "/home/user/work/temp"
}
                        

3Macの場合

ターミナルで「ffmpeg -list_devices true -f avfoundation -i dummy」を入力

情報表示
$ ffmpeg -list_devices true -f avfoundation -i dummy [AVFoundation indev @ 0x7f8b4af05000] AVFoundation video devices: [AVFoundation indev @ 0x7f8b4af05000] [0] Microsoft® LifeCam HD-3000 [AVFoundation indev @ 0x7f8b4af05000] [1] Capture screen 0 [AVFoundation indev @ 0x7f8b4af05000] AVFoundation audio devices: [AVFoundation indev @ 0x7f8b4af05000] [0] Microsoft® LifeCam HD-3000

videoデバイスの番号を設定します。(上記の場合、0)


{
    "VideoCaptureDevice" : "0",
    "PushResultOutputPath" : "/home/user/work/temp"
}
                        
注意事項

番号は文字列として設定してください。

4

使用方法

パスが通っていれば、使い方はAIBOX OSに組み込まれているaicapコマンドと同じですので、開発環境で開発した独自検知プログラムは、そのままAIBOXに搭載できるはずです。