Windows-8.1_x64+VS2012+Kinect V2环境配置
我的开发环境设置在Windows 8.1 x64系统上,并使用Visual Studio 2012作为主要开发工具。为了配置开发环境,请先下载并安装必要的SDK支持软件包Kinect for Windows SDK 2.0(参考微软官网)。特别提醒:在安装SDK时,请避免同时连接Kinect V2设备以防止操作失误。此提示源自网络讨论区(如图所示),而我在实际测试中并未采取此类操作。
完成安装后,请运行“SDK Browser(Kinect for Windows)”,然后执行“Kinect Configuration Verifier”操作即可查看系统验证结果(如某几项结果尚存疑问)。根据实际测试结果表明这些问题并未影响正常运行(如图所示),因此最终确认能够正常工作。


类似地,在设置VC++开发环境中进行OpenCV的配置与Kinect V2的设置相仿左右。实际上Kinect V2并不需要进行系统的环境变量配置,即使未进行系统环境变量配置也能正常运行。创建工程项目后,在属性管理器界面右键点击"添加新项目属性表"(方便快速设置属性),这样可以在一次操作中完成所有必要的参数配置,并且以后只需在对应项目中右键点击"添加现有属性表"即可重复使用这些设置参数。通过安装Kinect for Windows SDK 2.0系统会自动地将相关软件资源文件按照指定的位置路径正确地添加到系统环境中
| 变量名 | 变量值 |
|---|---|
| KINECTSDK20_DIR | C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409| |
其实在Kinect for Windows SDK 2.0中,默认的安装路径相当于C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409
接下来就是真正的环境配置了:
选中“VC++目录” ,
“可执行文件目录”中添加:
$(KINECTSDK20_DIR)\bin
或
C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\bin
“包含目录”中添加:
$(KINECTSDK20_DIR)\inc
或
C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\inc
“库目录”中添加:
$(KINECTSDK20_DIR)\Lib\x86
或
C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\Lib\x86
选中“链接器”
“附加库目录”中添加:
$(KINECTSDK20_DIR)\Lib\x86
或
C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\Lib\x86
“链接器” –> “输入”
“附加依赖项”中添加:
Kinect20.lib
最后附测试程序:
#include <Kinect.h> // 使用Kinect
#include <iostream>
void kinectTest()
{
IKinectSensor *mySensor = nullptr;
GetDefaultKinectSensor(&mySensor); // 获取传感器
mySensor->Open(); // 打开感应器
// ---------------------获取深度数据--------------------------------------
IDepthFrameSource *mySource = nullptr;
mySensor->get_DepthFrameSource(&mySource); // 获取深度数据
int height = 0, width = 0;
IFrameDescription *myDescription = nullptr;
mySource->get_FrameDescription(&myDescription); // 获取深度数据的分辨率
myDescription->get_Height(&height);
myDescription->get_Width(&width);
myDescription->Release();
myDescription = nullptr;
IDepthFrameReader *myReader = nullptr;
mySource->OpenReader(&myReader); // 打开深度数据的Reader
int times = 100;
IDepthFrame *myFrame = nullptr;
cv::Mat temp(height, width, CV_16UC1);
cv::Mat img(height, width, CV_8UC1);
while (times)
{
if (myReader->AcquireLatestFrame(&myFrame) == S_OK) //
{
UINT size = 0;
UINT16 *buffer = nullptr;
myFrame->AccessUnderlyingBuffer(&size, &buffer);
std::cout << times << "\t"<< buffer[width*(height/2) + width/2] << std::endl;
times--;
myFrame->Release();
/* myFrame->CopyFrameDataToArray(height*width, (UINT16 *)temp.data);
temp.convertTo(img, CV_8UC1, 255.0 / 4500);
imshow("Depth Map", img);
myFrame->Release();
myFrame = nullptr;*/
}
if (cv::waitKey(30) == VK_ESCAPE)
{
break;
}
}
myReader->Release();
myReader = nullptr;
mySource->Release();
mySource = nullptr;
mySensor->Close();
mySensor->Release();
mySensor = nullptr;
}
在执行完成后,一旦配置完成,则会在控制台界面显示该深度图的核心位置的数据信息,并如附图所示。

参考资料
[1] SDK与Visual Studio 2012环境搭建(<>)
[ Kinect for Windows V.₂开发日志一:配置开发环境](http://www.cnblogs.com/xz8₁₆₁₁₁/p/₅₁₈₄₂₇₃. html) (<http://www.cnblogs.com/xz8₁₆₁₁₁/ catego> ry/7864₅6.html>)
