OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
Creative Senz3Dおよびその他のIntel RealSense SDK互換深度センサの利用

前のチュートリアル: Orbbec 3Dカメラの利用 (UVC)
次のチュートリアル: UbuntuでのWayland highguiバックエンドの利用

原著者Alessandro de Oliveira Faria
互換性OpenCV >= 4.5.5
hardwares

注意: PerC SDKはRealSense SDKに置き換えられたため、このチュートリアルは部分的に古くなっている

Intel® RealSense SDKに対応した深度センサーは、VideoCaptureクラスを通じてサポートされる。深度マップ、RGB画像、その他いくつかの形式の出力は、VideoCaptureの使い慣れたインターフェースを使って取得できる。

OpenCVで深度センサーを使用するには、次の準備手順を行う必要がある:

  1. Intel RealSense SDK 2.0をインストールする(こちらから https://github.com/IntelRealSense/librealsense)。
  2. CMakeでWITH_LIBREALSENSEフラグを設定して、OpenCVをIntel RealSense SDKサポート付きで構成する。Intel RealSense SDKがインストールフォルダで見つかれば、OpenCVはIntel Realsense SDKライブラリとともにビルドされる(CMakeログのLIBREALSENSEステータスを参照)。
  3. OpenCVをビルドする。

VideoCapture は次のデータを取得できる:

  1. data given from depth generator:
    • CAP_INTELPERC_DEPTH_MAP - 各ピクセルは16ビット整数である。値は物体からカメラのXY平面までの距離、すなわちデカルト深度を示す。(CV_16UC1)
    • CAP_INTELPERC_UVDEPTH_MAP - 各ピクセルは0〜1の範囲の2つの32ビット浮動小数点値を含み、深度座標から色座標へのマッピングを表す。(CV_32FC2)
    • CAP_INTELPERC_IR_MAP - 各ピクセルは16ビット整数である。値は反射したレーザービームの強度を示す。(CV_16UC1)
  2. data given from RGB image generator:
    • CAP_INTELPERC_IMAGE - カラー画像。(CV_8UC3)

深度センサーから深度マップを取得するには、VideoCapture::operator >> を使用する。例:

VideoCapture capture( CAP_REALSENSE );
for(;;)
{
Mat depthMap;
capture >> depthMap;
if( waitKey( 30 ) >= 0 )
break;
}

複数のデータマップを取得するには、VideoCapture::grab と VideoCapture::retrieve を使用する。例:

VideoCapture capture(CAP_REALSENSE);
for(;;)
{
Mat depthMap;
Mat image;
Mat irImage;
capture.grab();
capture.retrieve( depthMap, CAP_INTELPERC_DEPTH_MAP );
capture.retrieve( image, CAP_INTELPERC_IMAGE );
capture.retrieve( irImage, CAP_INTELPERC_IR_MAP);
if( waitKey( 30 ) >= 0 )
break;
}

センサーのデータ生成器のプロパティを設定・取得するには、それぞれ VideoCapture::set と VideoCapture::get メソッドを使用する。例:

VideoCapture capture(CAP_REALSENSE);
capture.set( CAP_INTELPERC_DEPTH_GENERATOR | CAP_PROP_INTELPERC_PROFILE_IDX, 0 );
cout << "FPS " << capture.get( CAP_INTELPERC_DEPTH_GENERATOR+CAP_PROP_FPS ) << endl;

2種類のセンサーのデータ生成器(画像生成器と深度生成器)がサポートされているため、必要な生成器のプロパティを設定・取得するために使用すべき2つのフラグがある:

  • CAP_INTELPERC_IMAGE_GENERATOR – イメージジェネレータのプロパティにアクセスするためのフラグ。
  • CAP_INTELPERC_DEPTH_GENERATOR – デプスジェネレータのプロパティにアクセスするためのフラグ。プロパティの2つの可能な値のいずれも設定されていない場合、このフラグ値がデフォルトで想定される。

詳しくは、opencv/samples/cppフォルダ内の使用例 videocapture_realsense.cpp を参照すること。