使用Creative Senz3D和其他英特爾感知計(jì)算SDK兼容的深度傳感器

2018-10-06 10:29 更新

通過VideoCapture類支持與英特爾感知計(jì)算SDK兼容的深度傳感器。通過使用VideoCapture的熟悉界面,可以檢索深度圖,RGB圖像和其他一些輸出格式。

為了在OpenCV中使用深度傳感器,您應(yīng)該執(zhí)行以下初步步驟:

  1. 安裝英特爾感知計(jì)算SDK(從這里http://www.intel.com/software/perceptual)。
  2. 通過在CMake中設(shè)置WITH_INTELPERC標(biāo)志來配置具有英特爾感知計(jì)算SDK支持的OpenCV。如果英特爾感知計(jì)算SDK在安裝文件夾中找到,OpenCV將使用英特爾感知計(jì)算SDK庫(請(qǐng)參閱CMake日志中的INTELPERC狀態(tài))。如果CMake進(jìn)程沒有自動(dòng)找到Intel Perceptual Computing SDK安裝文件夾,用戶應(yīng)將相應(yīng)的CMake變量INTELPERC_LIB_DIR和INTELPERC_INCLUDE_DIR更改為正確的值。
  3. 構(gòu)建OpenCV。

VideoCapture可以檢索以下數(shù)據(jù):

  • 深度發(fā)生器給出的數(shù)據(jù):

    1. CAP_INTELPERC_DEPTH_MAP - 每個(gè)像素是一個(gè)16位整數(shù)。該值表示從物體到相機(jī)的XY平面或笛卡爾深度的距離。(CV_16UC1)
    2. CAP_INTELPERC_UVDEPTH_MAP - 每個(gè)像素包含0-1范圍內(nèi)的兩個(gè)32位浮點(diǎn)值,表示深度坐標(biāo)與顏色坐標(biāo)的映射。(CV_32FC2)
    3. CAP_INTELPERC_IR_MAP - 每個(gè)像素是一個(gè)16位整數(shù)。該值表示反射激光束的強(qiáng)度。(CV_16UC1)

    • RGB圖像發(fā)生器提供的數(shù)據(jù):
    1. CAP_INTELPERC_IMAGE - 彩色圖像。(CV_8UC3)

    為了從深度傳感器獲取深度圖使用VideoCapture :: operator >>,例如:

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

    要獲取幾個(gè)數(shù)據(jù)地圖,請(qǐng)使用VideoCapture :: grab和VideoCapture :: retrieve,例如:

    VideoCapture capture(CAP_INTELPERC);
    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;
    }

    為了設(shè)置和獲取傳感器數(shù)據(jù)生成器的某些屬性,請(qǐng)分別使用VideoCapture :: set和VideoCapture :: get方法,例如:

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

    由于支持兩種類型的傳感器數(shù)據(jù)生成器(圖像生成器和深度生成器),因此需要使用兩個(gè)標(biāo)志來設(shè)置/獲取所需生成器的屬性:

    1. CAP_INTELPERC_IMAGE_GENERATOR - 用于訪問圖像生成器屬性的標(biāo)志。
    2. CAP_INTELPERC_DEPTH_GENERATOR - 用于訪問深度生成器屬性的標(biāo)志。默認(rèn)情況下假設(shè)該標(biāo)志值,如果該屬性的兩個(gè)可能的值都未設(shè)置

    有關(guān)更多信息,請(qǐng)參閱opencv / samples / cpp文件夾中使用intelperc_capture.cpp的示例。


    以上內(nèi)容是否對(duì)您有幫助:
    在線筆記
    App下載
    App下載

    掃描二維碼

    下載編程獅App

    公眾號(hào)
    微信公眾號(hào)

    編程獅公眾號(hào)