openNI可以与Kinect一代兼容,这样pcl就可以直接通过kinect获取点云数据,但是openNI2与Kinect 2.0不能直接兼容,需要使用kinect for windows SDK 2.0提供的接口函数来构建数据获取模块,将此模块替换原有的openNI深度数据获取模块。这个模块获取需要借助VS2013来完成,其它版本可能会出现问题。
1 openNI 2和kinect for windows SDK 2.0安装
(1)openNI 2在安装pcl的时候已经安装,若没有安装pcl的也可以单独安装。
下载地址:http://cvrlcode.ics.forth.gr/web_share/OpenNI/OpenNI_SDK/ 安装路径可以自己选择。
(2)kinect for windows SDK 2.0的下载安装之前的博客已经介绍了;
博客链接:https://blog.csdn.net/weixin_44063985/article/details/89314022
2 配置过程
配置过程的原文链接:https://blog.csdn.net/zzu_seu/article/details/88322319
不想自己配置的直接跳转到我的第3部分
(1)下载含有支持 Kinect V2的openNI2 驱动程序源码
网址链接:https://github.com/occipital/OpenNI2/tree/kinect2
网盘链接:https://pan.baidu.com/s/17qEfWWtkq4ikrrL-DAvksw 提取码:ahgr
(2) 1.用VS2013打开刚下载的openNI2驱动程序源码中后缀为.snl的OpenNI文件。
(3)打开后,可以点击视图调出解决方案资源管理器。右键openNI-生成
(4)右击kinect2 - 属性 - 配置属性 - VC++目录,配置包含目录和库目录,包含目录:C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\inc 库目录:C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\Lib\x64 。点击那个向下的箭头块,编辑就可以。(这些都是配置步骤,之前也提到过)
(5)点击该页面的链接器 - 输入 - 附加依赖项。按照刚才的方法,输入Kinect20.lib、XnLib.lib,确定(配置步骤)。
(6)右击kinect2 - 生成!
以上所有成功后,你可以在OpenNI2-kinect2 - Bin - x64-Debug - OpenNI2 - Drivers文件夹中找到Kinect2的相关文件。
(7)将kinect2的所有文件复制到openNI2安装目录 - openNI2 - Tools - openNI2 - Drivers,这样就可以了,运行NiViewer。(NiViewer在tools文件里面)
这个时候,已经大功告成啦! 运行NiViewer会显示图像啦!
3重点来了
我当初下载的是VS2017,上面配置过程是在VS2013上完成的,用2017不行,后来我又下载了VS2013,但还是不行,看到原博客下面有人评论说重装系统就好了。重装。。。我想想还是找找别的办法,前面我也说了,我们需要的,是用kinect for windows SDK 2.0提供的接口函数来构建数据获取模块,将此模块替换原有的openNI深度数据获取模块,便能解决问题,也就是我们只要完成上面的第(7)步就行了。于是我联系了原博客的博主,让他将它生成的文件发给我,我直接做个替换就行了。在这里再次感谢zzu_seu博主的热情帮助。替换文件:链接:https://pan.baidu.com/s/1GbMaaTM9O4W0qiZyJt05Sg 提取码:wf4d
替换下图对应的Drivers文件就行。
运行NiViewer显示图像代表成功了。