作为1个研究生狗,最近应老板的要求在学习关于Kinect方面的知识。
其中遇到1个问题就是:学校购入的Kinect是Kinect 2代,而且我所学习的框架必须依赖OpenNI库,但是Kinect2和OpenNI2在查阅各种资料下,似乎是不兼容的。如图:
为了解决这个问题,花费了我好久的时间。不过还好,终究在某外网的问答下找到了答案。
首先,我先报下我的环境:
操作系统:win8.1(Kinect 2需要搭配 kinect for windows SDK 2.0,而SDK2.0需要win8及其以上系统。)
装备:Kinect Xbox One
软件:Kinect for windows SDK 2.0
OpenNI 2.2
Kinect 2的安装:
(虽然我的系统是64位,可我觉得32位更方便,以下所有软件我都是使用的32位版本。)
1、下载并安装Kinect for windows 2.0(记住,此时Kinect不能连接电脑)。由于是微软的比较霸道,不能更改安装路径。如果有想知道路径的朋友,其路径是C:\Program Files\Microsoft SDKs\Kinect
网上有很多关于Kinect的安装教程,相信很多同学都看见过SDK1.x+OpenNI+NITE的安装教程。那是在SDK 2.0之前,如果在windows系统上开发Kinect需要借助OpenNI和NITE。SDK2.0发布后,其实1般简单的程序都有包括。目前Kinect 2代大致有两种选择:1、使用SDK;2、使用SDK+OpenNI2。二者有各自的好,1个是开源,1个比较便利。这就需要自己去选择啦。
2、连接Kinect(记住1定要用usb3.0接口)。以后电脑会自动安装Kinect所需的驱动。
此时打开Kinect studio,点击connected
可以测试电脑是不是可以连接Kinect
如果你是只安装SDK,到此就安装成功了,SDK中有很多例子(点击SDK Browser),可以多看看,使用也很方便。
3、下载并安装OpenNI2。这里就不详细讲授了,设置好安装路径再1路next就能够了。
安装完,点击NiViewer测试是不是成功。
成功!
OpenNI2遇到no devices found问题:
如开篇所说,查阅了很多资料都是Kinect 2 与 OpenNI2 不兼容,所以OpenNI辨认不了Kinect 2装备。不过,误打误撞的我找到了解决方法:
1、下载OpenNI2-Kinect2Driver。点击Download ZIP,下载到1个你想要的路径,并解压。
2、用vs2013运行OpenNI.sln。(关于vs的选择,它虽然是vs2010编译的,但是要求vs2012及其以上运行。我用vs2012运行会报错并且需要改平台工具集,所以试过以后我建议大家用vs2013。)
3、打开以后,大家会发现它默许的活动解决方案平台是x64,其实不是win32,鉴于上面我们都是用的32位的软件,所以改成win32(x86)。如果你需要的是64位不需要改平台,以下也会顺带讲授。
然后点击生成OpenNI,成功。
右击Kinect2,点击属性->配置属性->vc++目录:
配置包括目录:C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\inc
配置库目录:C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\Lib\x86(32位)
C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\Lib\x64(64位)
再点击链接器->输入
配置附加依赖项:Kinect20.lib和XnLib.lib
配置好属性后,点击生成Kinect2
如果你的活动解决方案平台是win32:
在:你选择解压的路径\OpenNI2-kinect2\Bin\Win32-Debug\OpenNI2\Drivers中可以找到Kinect2.dll,Kinect.lib等
如果你的活动解决方案平台是x64:
将得到的文件复制到:
OpenNI2安装目录\OpenNI2\Tools\OpenNI2\Drivers下
运行NiViewer,成功~!
注:1.选择你32位OpenNI2要对应选择win32平台,64位的OpenNI2要选择对应的x64平台。
2.使用OpenNI时,记得要把OpenNI2\Redist中的所有内容复制到项目中。
困扰我很久的问题~通过自己的努力解决了~希望大家多多支持~科科~
下一篇 应聘时漂亮的回答