OpenCV中Kinect的使用(2)

OpenCV中Kinect的使用(1),主要講述OpenCV中關於Kinect接口(類 VideoCapture )的一些使用介紹。html

類 VideoCapture 支持Kinect傳感器。使用 VideoCapture 裏的接口,能夠從Kinect獲取深度圖,RGB圖像和其餘格式的輸出,主要包括: ide

1)來自深度傳感器的數據:post

  • OPENNI_DEPTH_MAP - 以毫米爲單位的深度值 (CV_16UC1)
  • OPENNI_POINT_CLOUD_MAP - 以米爲單位的XYZ點雲 (CV_32FC3)
  • OPENNI_DISPARITY_MAP - 以像素爲單位的視差 (CV_8UC1)
  • OPENNI_DISPARITY_MAP_32F - 以像素爲單位的視差 (CV_32FC1)
  • OPENNI_VALID_DEPTH_MASK - 有效像素標誌 (非遮擋,非影子區等) (CV_8UC1)

2)來自RGB圖像傳感器的數據:ui

  • OPENNI_BGR_IMAGE - 彩色圖像 (CV_8UC3)
  • OPENNI_GRAY_IMAGE - 灰度圖像 (CV_8UC1)

獲取多個Kinect數據,可以使用 VideoCapture::grab 和 VideoCapture::retrieve,例如:url

1 cv::VideoCapture capture = VideoCapture( CV_CAP_OPENNI );
2 capture.set( CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON, 1.0 );
3 capture.grab();
4 capture.retrieve( scene_img, CV_CAP_OPENNI_BGR_IMAGE );
5 capture.retrieve( depthImg, CV_CAP_OPENNI_DEPTH_MAP );
6 capture.retrieve( cloudImg, CV_CAP_OPENNI_POINT_CLOUD_MAP );   

其中,set用來設置Kinect數據屬性,包括:spa

  • CV_CAP_OPENNI_IMAGE_GENERATOR – 讀寫圖像傳感器屬性的標誌;
  • CV_CAP_OPENNI_DEPTH_GENERATOR – 讀寫深度傳感器屬性的標誌——此標誌爲默認值,若是這兩個標誌都沒有設置,則爲此標誌。

當讀寫特定傳感器屬性時,必須用此標誌指定傳感器。以下屬性可透過OpenNI接口支持:code

1)圖像傳感器: htm

  • CV_CAP_PROP_OPENNI_OUTPUT_MODE – 支持兩種模式:缺省的 CV_CAP_OPENNI_VGA_30HZ (圖像傳感器以30FPS速度返回VGA分辨率的圖像)
  • CV_CAP_OPENNI_SXGA_15HZ (圖像傳感器以15FPS速度返回SXGA分辨率的圖像);深度傳感器一直是VGA分辨率。

2)深度傳感器:blog

  • CV_CAP_PROP_OPENNI_REGISTRATION – 此標誌用來校準深度圖,經過改變深度傳感器的視點到圖像傳感器,這樣兩圖中同一位置的像素表示同一物體(需將此標誌設置爲 "on"); 或者設置深度傳感器的視點爲其原本的視點(需將此標誌設置爲 "off")

3)一些」generator type + property」被定覺得一個標誌:接口

  • CV_CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE = CV_CAP_OPENNI_IMAGE_GENERATOR + CV_CAP_PROP_OPENNI_OUTPUT_MODE
  • CV_CAP_OPENNI_DEPTH_GENERATOR_BASELINE = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_BASELINE
  • CV_CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_FOCAL_LENGTH
  • CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON = CV_CAP_OPENNI_DEPTH_GENERATOR + CV_CAP_PROP_OPENNI_REGISTRATION_ON

參考資料:

使用Kinect傳感器

 

2013-10-28

相關文章
相關標籤/搜索