图像处理中一般为了更好的获取外部信息都会使用到Kinect,其优势在于除了传统的RGB摄像头之外,还拥有一个获取深度信息的3D深度感应器,因此可以获得外界物体的3维信息实现物体的跟踪、手势识别等各项功能。更详细的介绍可参考:身體就是控制器,微軟Kinect是怎麼做到的?

下面介绍OpenCV中Kinect的一些简单的使用方法。

  • Kinect驱动的安装

  这里选择PrimeSense公司的OpenNI系列(开源+多平台64+32),主要由三部分组成(从底层到高层):PrimeSenser驱动(底层驱动),OPENNI软件包(提供硬件与应用软件连接的中间层),NITE软件包(负责手势和骨咯侦测)。

  安装顺序如下:

  1 OpenNI-Win32-1.3.2.1-Dev.msi

  2 avin2-SensorKinect-0e5a176\Bin\SensorKinect-Win-OpenSource32-5.0.3.3.msi

  3 NITE-Win32-1.4.0.5-Dev.msi

  4 Sensor-Win32-5.0.3.3-Redist.msi

  “OPENNI会根据(C:\Program Files\OpenNI)下面data下的3个xml文件来启动硬件(值得注意的是,它不是直接访问硬件传输数据,而是呼叫驱动代理C:\Program Files\PrimeSense\Sensor\Bin下面的*.exe[所以我们要先安装openNI再安装driver];

  安装好OPENNI和sensore dirver后,我们只可以运行openNI里面的部分事例(C:\Program Files\OpenNI\Samples);为什么是部分呢?因为OPENNI和骨咯软件NITE是联动的,里面高级的samples需要访问NITE引擎”。

  测试OpenNI驱动是否安装成功的简单方法便是运行其自带的sample,如C:\Program Files\OpenNI\Samples\Bin\Release下的NiViewer.exe。

  • 注意事项:  

  1:OpenNI官网上OpenNI以更新到2.0系列,其架构和组成已和1系列发生了很大的不同,其中包括安装方法,组成等,而且更重要的一点是现在OpenCV的版本中还没有开发出对应OpenNI2系列的接口,因此现在要通过OpenNI驱动Kinect的话必须要使用OpenNI 1系列,1和2系列的变化具体可参考官网:《Middleware Library Guidelines》

  2:要驱动Kinect的话,OpenCV应在自己的电脑上重新cmake过一遍,参见这里

  3:如果仅仅要利用Kinect获取深度图像的话,只需安装1和2即可,如果要加入手势识别和骨骼识别的话,3和4必不可少;

  4:无论你的电脑是32(x86)还是64bit,32bit的OpenNI驱动都可以顺利安装成功,同理,OpenCV也一样,一切都按照32bit的操作即可(包括VS的配置和使用);

  5:无法定位程序输入点XXXXX到OpenNI.dll库上的解决方法

参考资料:

使用Kinect传感器

Kinect OPENNI 安装教程(for Win x64 i32)

2013-10-26

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

  1. OpenCV中Kinect的使用(3)

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

  2. OpenCV中Kinect的使用(2)

    接OpenCV中Kinect的使用(1),主要讲述OpenCV中关于Kinect接口(类 VideoCapture )的一些使用介绍. 类 VideoCapture 支持Kinect传感器.使用 Vi ...

  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. hibernate CascadeType属性

    CascadeType.PERSIST 只有A类新增时,会级联B对象新增.若B对象在数据库存(跟新)在则抛异常(让B变为持久态) : 级联保存,当调用了Persist() 方法,会级联保存相应的数据 ...

  2. SpringMvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  3. 有哪些通俗易懂的例子可以解释 IaaS、PaaS、SaaS 的区别?

    有哪些通俗易懂的例子可以解释 IaaS.PaaS.SaaS 的区别? S 软件 P 中间件 I 基础设施

  4. iOS小技巧 - 如何生成范围随机数

    生成[0, N-1]的随机数 NSUInteger r = arc4random_uniform(N); 生成[1, N]的随机数 NSUInteger r = arc4random_uniform( ...

  5. Android项目总结

    功能: 1.图片载入 ImageLoader 參数配置要合理    cacheMemory 一次性的图片最好不要缓存在内存中   合理控制在内存中的内存大小 ,适当的释放   volley是googl ...

  6. 倍福TwinCAT(贝福Beckhoff)应用教程11.1 TwinCAT应用小程序1 如何读写数字量模拟量输入输出(DI,DO,AI,AO)

    常见的模拟量模块(还有更高端和更低端的,使用方法都一样) EL3054和EL4024(4路模拟量输入和输出模块)   常见的数字量模块(还有更高端和更低端的,使用方法都一样) EL1809和EL280 ...

  7. java之static关键字

    介绍: 1.在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份. 2.用static声明的方法为静态方 ...

  8. Tomcat 服务器只能存有一个正在运行的项目

    即使新建了一个new project (在同一个工作空间),启动Tomcat 还是会出现先前(工程名)一样的问题/异常. [原因]: 在底下Server 那里——Tomcat 7.X 底下会有很多工程 ...

  9. Redis Win平台安装

    安装准备 Redis 官网:https://redis.io/ 中文官网:http://www.redis.cn/ Redis 在Window上并没有提供官方版本.所以可以去微软维护的包库上下载. 下 ...

  10. webpack打包vue2.0项目时必现问题(转载)

    原文地址:http://www.imooc.com/article/17868 [Vue warn]: You are using the runtime-only build of Vue wher ...