OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
无匹配项
使用Creative Senz3D和其他Intel RealSense SDK兼容的深度传感器

上一篇教程: 使用Orbbec 3D摄像头(UVC)
下一篇教程: 在Ubuntu中使用Wayland highgui后端

硬件

注意:由于PerC SDK已被RealSense SDK取代,本教程部分内容已过时。

兼容Intel® RealSense SDK的深度传感器通过VideoCapture类支持。可以使用VideoCapture熟悉的接口检索深度图、RGB图像和其他一些格式的输出。

为了使用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. 深度生成器提供的数据:
    • CAP_INTELPERC_DEPTH_MAP - 每个像素都是一个16位整数。该值表示物体到相机XY平面的距离或笛卡尔深度。(CV_16UC1)
    • CAP_INTELPERC_UVDEPTH_MAP - 每个像素包含两个范围为0-1的32位浮点数,表示深度坐标到颜色坐标的映射。(CV_32FC2)
    • CAP_INTELPERC_IR_MAP - 每个像素都是一个16位整数。该值表示反射激光束的强度。(CV_16UC1)
  2. RGB图像生成器提供的数据:
    • CAP_INTELPERC_IMAGE - 彩色图像。(CV_8UC3)

为了从深度传感器获取深度图,请使用VideoCapture::operator >>,例如:

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

为了获取多个数据图,请使用VideoCapture::grab和VideoCapture::retrieve,例如:

VideoCapture capture(CAP_REALSENSE);
循环(;;)
{
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;

由于支持两种类型的传感器数据生成器(图像生成器和深度生成器),因此有两个标志应用于设置/获取所需生成器的属性:

  • CAP_INTELPERC_IMAGE_GENERATOR – 用于访问图像生成器属性的标志。
  • CAP_INTELPERC_DEPTH_GENERATOR – 用于访问深度生成器属性的标志。如果未设置这两个属性的任何一个值,则默认为此标志值。

更多信息,请参考opencv/samples/cpp文件夹中的使用方法示例 videocapture_realsense.cpp