在这篇blog发表前,先对前辈"chenyusiyuan”致以崇高的敬意,由于你做的如此多的开源工作,让我们学到很多,期待你更多的开源,能够让我们学的更多。以下是我在学习他的基础上,做的读书笔记。
Kinect的安装:
注意:本教程只试用于v1.0.0.23版本的OpenNI和v1.3.0.17版本的NITE
请在安装前确认你下载的是正确的版本。
v1.0.0.23 OpenNI http://www.openni.org/downloadfiles/openni-binaries/21-stable (选择下载Windows版本)
v1.3.0.17 NITE http://www.openni.org/downloadfiles/openni-compliant-middleware-binaries/34-stable (选择下载Windows版本)
Kinect驱动:http://dl.dbank.com/c059av7eg5
安装步骤:
【1】卸载所有之前安装过的旧驱动
例如:由第三方破解的驱动,如NUI或libfreenect
【2】Install OpenNI
【3】Install Sensor
安装执行文件 SensorKinect-Win32-5.0.0.exe
(解压压缩包 avin2-SensorKinect-b7cd39d,可在Bin目录下找到该执行文件)
(该执行文件是由国外大侠Avin制作的,不知道他是不是PrimeSence公司的员工,不过我经常在谷歌的OpenNI群组里看到他)
(英文原文解释:The installer will also automatically register all the modules into OpenNI via the NiReg utility)
【4】连接Kinect到PC
注意:请插上转接口的电源,以保证Kinect的供电
如果驱动安装成功,可以在“设备管理器”里可以查看到下图所示标志:
(如果驱动没有安装成功,请把Kinect拔掉重新再插一遍)
注意:Xbox NUI Audio驱动,目前还无法驱动上。所以无法识别 Xbox NUI Audio 属于正常现象。
【5】Install NITE( 我第一次安装的时候,忽略了key,然后很多demo就无法运行)
注意:安装NITE时需要CD-KEY 0KOIk2JeIBYClPWVnMoRKn5cdY4=
【6】关键步骤
<1> All of the NITE samples are using 320x240 resolution. You need to change it to 640x480 in the XML files inside the Data directory.
(不过不用担心,Avin已经替我们都准备好了)
(从"c:/Program Files/Prime Sense/Sensor/SampleXMLs/NITE/Data/" 里复制所有XML文件到 "c:/Program Files/Prime Sense/NITE/Data/" )(选择覆盖文件)
(从"c:/Program Files/Prime Sense/Sensor/SampleXMLs/OPENNI/Data" 里复制所有XML文件到 "c:/Program Files/OpenNI/Data" )(选择覆盖文件)
<2> 运行NITE的执行例子,还需要修改XML中的CD key
将"c:/Program Files/Prime Sense/NITE/Data/"目录下所有的XML文件中Licenses部分替换为:
<Licenses>
<License vendor="PrimeSense" key="0KOIk2JeIBYClPWVnMoRKn5cdY4="/>
</Licenses>
【7】测试实验
注意:OpenNI执行例子的默认目录是:c:/Program Files/OpenNI/Samples/Bin
注意:NITE执行例子的默认目录是:c:/Program Files/Prime Sense/NITE/Samples/Bin
<1> 运行OpenNI目录下的执行例子 NiViewer sample 确保 depth & image streams 能够正常运行。
<2> 运行OpenNI目录下的执行例子 NiUserTracker sample play with the skeleton. Don't forget to start with the calibration pose!
<3> 运行NITE目录下的执行例子 PointViewer sample for the hand tracking demo.
opencv2.2的安装:
如果需要让kinect支持opencv2.2,需要从SVN上下载最新的opencv2.2,然后修改highgui_c.h, cap_openni.cpp。
然后用cmake软件,重新编译。
bool CvCapture_OpenNI::setDepthGeneratorProperty( int propIdx, double propValue )
{
bool res = false;
CV_Assert( depthGenerator.IsValid() );
switch( propIdx )
{
case CV_CAP_PROP_OPENNI_VIEW_POINT :
depthGenerator.GetAlternativeViewPointCap().SetViewPoint( imageGenerator );
res = true;
break;
default :
CV_Error( CV_StsBadArg, "Depth generator does not support such parameter for setting./n");
res = false;
}
return res;}
在 highgui_c.h 的第 348 行下添加改变视角的参数 ID 号:
CV_CAP_PROP_OPENNI_VIEW_POINT=24,
然后在第 352 行下添加:(这一行需要在358行后在添加,即对CV_CAP_PROP_OPENNI_VIEW_POINT赋值以后)
CV_CAP_OPENNI_DEPTH_GENERATOR_VIEW_POINT=CV_CAP_OPENNI_DEPTH_GENERATOR+CV_CAP_PROP_OPENNI_VIEW_POINT
最后最重要的环境变量配置:
vs2010环境变量的配置方法已经有所改变,要选择解决方案,点击右键属性:
openni:
1.vc++目录=> ”包含目录"中,添加"$(OPEN_NI_INCLUDE)",这是一个指向OpenNI Include目录的环境变量。(默认位置为:C:/Program files/OpenNI/Include)
2.vc++目录=> ”库目录"中, 添加"$(OPEN_NI_LIB)",这是一个指向OpenNI 库目录的环境变量。(默认位置为:C:/Program files/OpenNI/Lib)
nite:
C:/Program Files/Prime Sense/NITE/Include;
C:/Program Files/Prime Sense/NITE/lib;
opengl:
选择linker => Input,选择 Additional Dependencies添加OpenNI.lib,glut32.lib。
需要包含glut.h的目录
额外注意:
1.如果你想使用XML文件来配置OpenNI,你可以从基本的XML文件,可以在OpenNI数据文件夹中找到。 (默认位置为:C:/Program files/OpenNI/Data。)有关OpenNI XML脚本的详细信息,请参见XML脚本。
2. 确保你的Release 和 Debug 配置中添加额外的include和库目录
3. 如果使用C,您的代码文件应包括XnOpenNI.h,或者如果使用的C++则就包含XnCppWrapper.h