OpenCV AI KIT (以下OAK)をインストールしたWindow10を使い、デモ用プログラムでどんなことができるのかを試してみました。今回は【深度ストリーム編】です。
作業を行った環境
- Windows 10 Home 1903(18362.778)
- Python 3.7.5
- DepthAI API 0.4.0.0
動作対象デバイス
- OAK-D
なお、実行したプログラムを終了するには、実行結果が表示されているウィンドウをアクティブにした状態でキーボードの「q」キーを押してください。
①3種類の深度マップを表示する
1-1)Depthモード
python depthai_demo.py -s depth
または、
python depthai_demo.py -s depth_raw
実行結果
大きなウィンドウ(ステレオカメラの解像度相当のサイズ)が表示され、景色の深度マップがリアルタイムで表示されました。
疑似カラー処理には、OpenCVのカラーマップ「COLORMAP_HOT」が使われています。映像は部屋を縦方向に撮影したもので、右奥と左手前に棚があり一番奥の壁際にベットがある風景です。
1-2)Disparty Colorモード
python depthai_demo.py -s disparity_color
実行結果
こちらのモードを使用すると、深度マップがカラーで表示されます。
Depthモードより、立体感があるため、目視で見る際にはこちらのモードの方が役立ちそうです。
1-3)Dispartyモード
python depthai_demo.py -s disparity
実行結果
今度はグレースケールのままで表示されました。疑似カラー処理が施されていない、オリジナルの深度マップのようです。
3種類のモードが選択できるため、目的に応じて使い分ける事ができ便利です。
②複数のストリームを表示する
2-1)RGBカメラの映像と深度ストリームを同時に表示
python depthai_demo.py -s previewout depth
実行結果
このように、-s オプションを使用することで、RGBカメラの映像と深度ストリームを同時に表示することができます。
2-2)RGBカメラの映像に推論結果を表示
python depthai_demo.py -s metaout previewout depth
実行結果
metaoutストリームを追加すると、RGBカメラの映像に推論結果が表示されます。
2-3)深度ストリーム側にも推論結果を表示
python depthai_demo.py -s metaout previewout depth -bb
実行結果
さらに-bb オプションを追加すると、深度ストリーム側にも推論結果が表示されます。
2-4)推論結果だけを深度ストリームに表示
python depthai_demo.py -dd -s metaout depth -bb -ff
実行結果
previewoutストリームを省略したため、RGBカメラの映像は表示されなくなりました。しかし、-bb オプションによって、深度ストリーム側への推論結果の表示は維持されています。なお、今回は深度情報(XYZの座標情報)を無効にするための -dd オプションも追加しました。
ここでキーになるのが、-ff オプションです。このオプションがないと、推論の対象領域が画面全体になりませんので注意してください。-ff オプションについては、【】で説明していますので参考にしてください。
2-5)利用可能なストリームについて
ストリームの指定に使用できる名称には以下のものがあります。
利用可能なストリーム
- metaout - Meta data results from the neural network
- previewout - Small preview stream from the color camera
- color - 4K color camera, biggest camera on the board with lens
- left - Left grayscale camera (marked L or LEFT on the board)
- right - Right grayscale camera (marked R or RIGHT on the board)
- rectified_left - Rectified left camera frames
- rectified_right - Rectified right camera frames
- depth - Depth in uint16 (see here for the format)
- disparity - Raw disparity
- disparity_color - Disparity colorized on the host (JET colorized visualization of depth)
- meta_d2h - Device die temperature (max temp should be < 105C)
- object_tracker - Object tracker results
※previewout、color、left/right、rectified_left/rightはカメラ入力のストリームです。
※depth、disparity、disparity_colorは深度マップ用のストリームです。
2-6)ストリームごとのフレームレートを制限する方法
ホスト側の処理や、USB2接続での転送に負荷がかかったときなどに、ストリームのフレームレートを制限する必要があります。そのような場合、-s オプションを使用したストリーム指定の際、最大のフレームレートを設定することができます。なお、未指定の場合は30fps(最大フレームレート)となります。
python depthai_demo.py -s left,2 right,2 previewout depth,5
例えばこのようなコマンドを使用すると、最大フレームレートが、leftとrightで2fps、previewoutで30fps、depthで5fpsに制限されたストリームがそれぞれのウィンドウに表示されます。
ヘルプの表示
python depthai_demo.py -h