OpenCV中Kinect的使用(1),主要讲述OpenCV中关于Kinect接口(类 VideoCapture )的一些使用介绍。

类 VideoCapture 支持Kinect传感器。使用 VideoCapture 里的接口,可以从Kinect获取深度图,RGB图像和其他格式的输出,主要包括:

1)来自深度传感器的数据:

  • 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图像传感器的数据:

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

获取多个Kinect数据,可使用 VideoCapture::grab 和 VideoCapture::retrieve,例如:

 cv::VideoCapture capture = VideoCapture( CV_CAP_OPENNI );
capture.set( CV_CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON, 1.0 );
capture.grab();
capture.retrieve( scene_img, CV_CAP_OPENNI_BGR_IMAGE );
capture.retrieve( depthImg, CV_CAP_OPENNI_DEPTH_MAP );
capture.retrieve( cloudImg, CV_CAP_OPENNI_POINT_CLOUD_MAP );

其中,set用来设置Kinect数据属性,包括:

  • CV_CAP_OPENNI_IMAGE_GENERATOR – 读写图像传感器属性的标志;
  • CV_CAP_OPENNI_DEPTH_GENERATOR – 读写深度传感器属性的标志——此标志为默认值,如果这两个标志都没有设置,则为此标志。

当读写特定传感器属性时,必须用此标志指定传感器。如下属性可透过OpenNI接口支持:

1)图像传感器:

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

2)深度传感器:

  • 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

OpenCV中Kinect的使用(2)的更多相关文章

  1. OpenCV中Kinect的使用(3)

    接OpenCV中Kinect的使用(2),下面内容主要讲述使用OpenNI 控制Kinect 的马达,实现摄像头的上下摆动. 下面是透过OpenNI比较低阶的USB控制介面(XnUSB.h),来做到马 ...

  2. OpenCV中Kinect的使用(1)

    图像处理中一般为了更好的获取外部信息都会使用到Kinect,其优势在于除了传统的RGB摄像头之外,还拥有一个获取深度信息的3D深度感应器,因此可以获得外界物体的3维信息实现物体的跟踪.手势识别等各项功 ...

  3. opencv中Mat与IplImage,CVMat类型之间转换

    opencv中对图像的处理是最基本的操作,一般的图像类型为IplImage类型,但是当我们对图像进行处理的时候,多数都是对像素矩阵进行处理,所以这三个类型之间的转换会对我们的工作带来便利. Mat类型 ...

  4. 解析opencv中Box Filter的实现并提出进一步加速的方案(源码共享)。

    说明:本文所有算法的涉及到的优化均指在PC上进行的,对于其他构架是否合适未知,请自行试验. Box Filter,最经典的一种领域操作,在无数的场合中都有着广泛的应用,作为一个很基础的函数,其性能的好 ...

  5. OpenCV中IplImage图像格式与BYTE图像数据的转换

    最近在将Karlsruhe Institute of Technology的Andreas Geiger发表在ACCV2010上的Efficent Large-Scale Stereo Matchin ...

  6. opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较

    opencv中的SIFT,SURF,ORB,FAST 特征描叙算子比较 参考: http://wenku.baidu.com/link?url=1aDYAJBCrrK-uk2w3sSNai7h52x_ ...

  7. 混合高斯模型:opencv中MOG2的代码结构梳理

    /* 头文件:OurGaussmix2.h */ #include "opencv2/core/core.hpp" #include <list> #include&q ...

  8. opencv中的.at方法

    opencv中的.at方法是用来获取图像像素值得函数: interpolation:差值 histogram:直方图

  9. 【OpenCV】OpenCV中GPU模块使用

    CUDA基本使用方法 在介绍OpenCV中GPU模块使用之前,先回顾下CUDA的一般使用方法,其基本步骤如下: 1.主机代码执行:2.传输数据到GPU:3.确定grid,block大小: 4.调用内核 ...

随机推荐

  1. Linq 简明教程

    一个简单的实例 static void Main(string[] args) { string[] names = { "Alonso", "Zheng", ...

  2. RUEI 13.1.1版本在OEL 5.7上的安装

    准备工作 ntp的工作和同步 /sbin/chkconfig --list | grep ntpd ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off /sb ...

  3. JavaScript里面向对象的继承:构造函数"继承"的六种方法

    //现在有一个"动物"对象的构造函数. function Animal(){ this.species = "动物"; } //还有一个"猫" ...

  4. 常见配置Server错误导致import 包无效等问题解决

  5. PhantomJS用法示例

    收录待用,修改转载已取得腾讯云授权 前言 大家有没有发现之前我们写的爬虫都有一个共性,就是只能爬取单纯的html代码,如果页面是JS渲染的该怎么办呢?如果我们单纯去分析一个个后台的请求,手动去摸索JS ...

  6. Alfresco 5.0.d 企业文档管理系统

    Thanks for downloading Alfresco Community Edition. Your download should begin in three seconds. If i ...

  7. 【Swift】学习笔记(三)——字符和字符串

    基本了解了变量的创建和基础数据类型,但是在开发中用得最多的还是字符串.那什么是字符串呢? Swift 的String类型表示特定序列的Character(字符) 类型值的集合,它是值类型具有可变性 S ...

  8. 在对方电脑建立IPC连接, 利用IPC$入侵 运行木马

    第一大步:  IPC漏洞的建立 1)在目标主机上设置组策略:開始->执行-〉gpedit.msc 2)计算机配置->windows配置-〉本地策略-〉安全选项 3)在安全选项中, 将网络訪 ...

  9. 1364:Field 'sex' doesn't have a default value [ SQL语句 ]

    1364:Field 'sex' doesn't have a default value [ SQL语句 ]   错误解决方法: 关闭MySQL的strict mode的具体做法: 找到MySQL目 ...

  10. Ruby 第一行代码

    main.rb #=猜数字 #这是一个简单的猜数字游戏 #==玩法 #随机生成一个『1,100』的自然数.会提示大小 class GuessNum def playGame wrongInt = tr ...