博主最近开始玩Kinect了!
这篇博客主要介绍Kinect2.0的开发环境配置,主要两点内容,一是在VS2013上配置Kinect2.0开发环境,二是编译一个采集RGB图像数据的小程序测试Kinect2.0的开发环境是否配好。
在你需要做好如下准备之后,就可以开始配置Kinect2.0的开发环境了。
首先检查你的PC,要求操作系统为Win8及以上(含Win8、Win8.1、Win10),拥有USB3.0(及以上)接口,如果你需要使用Kinect做实时三维重建及交互,那么你最好拥有一块中档(及以上)显卡,并且支持DirectX11(及以上)。
另外关于软件,本篇教程已经默认你配置了以下环境VS2012(及以上版本),OpenCV(2.4及以上,最好是3.1版本),配置好这些,我们就可以开始了。
一、安装Kinect驱动及SDK
在官网下载Kinect SDK 2.0,然后安装。
将Kinect适配器同Kinect、Kinect电源线及PC连接起来,Win8及以上系统会自动安装驱动,等待系统提示驱动安装完成。
打开Kinect Studio进行测试,如同上图中那样,点击连接可以正常打开Kinect,这样我们的驱动就安装成功了。
二、配置VS+OpenCV环境
打开VS2013的配置管理器,做非常简单的配置,在include path 中加入:$(KINECTSDK20_DIR)\inc ,在library path中加入:$(KINECTSDK20_DIR)\lib\x64 ,如果你是32位系统,最后改成x86就可以了。
三、编译采集RGB图像的测试程序
在VS中新建控制台程序,然后编译如下代码,并运行:
#include <opencv2\opencv.hpp>
#include <iostream>
#include <Kinect.h>
#pragma comment(lib, "kinect20.lib")
#pragma comment(lib, "opencv_world310d.lib")
using namespace cv;
using namespace std;
int main(int argc, char* argv[]){
HRESULT hResult = S_OK;
IKinectSensor *kinect;
GetDefaultKinectSensor(&kinect);
kinect->Open();
IColorFrameSource *colorsource;
IColorFrameReader *colorreader;
IFrameDescription *colorde;
kinect->get_ColorFrameSource(&colorsource);
colorsource->OpenReader(&colorreader);
colorsource->get_FrameDescription(&colorde);
int width = 0;
int height = 0;
colorde->get_Height(&height);
colorde->get_Width(&width);
Mat a(height, width, CV_8UC4);
namedWindow("Capture Image From Kinect2.0");
while (1){
IColorFrame *frame;
hResult = colorreader->AcquireLatestFrame(&frame);
if (SUCCEEDED(hResult)){
frame->CopyConvertedFrameDataToArray(height*width * 4,
reinterpret_cast<BYTE*>(a.data), ColorImageFormat::ColorImageFormat_Bgra);
}
if (frame != NULL){
frame->Release();
frame = NULL;
}
if (waitKey(30) == VK_ESCAPE)
break;
imshow("aaa", a);
}
if (colorsource != NULL){
colorsource->Release();
colorsource = NULL;
}
if (colorreader != NULL){
colorreader->Release();
colorreader = NULL;
}
if (colorde != NULL){
colorde->Release();
colorde = NULL;
}
if (kinect){
kinect->Close();
}
if (kinect != NULL){
kinect->Release();
kinect = NULL;
}
destroyAllWindows();
return 0;
}
以上代码应该即使没有了解过SDK也能看懂,这样就展示了一个可以打开Kinect的程序,并能从Kinect读入RGB彩色数据。
Kinect摄像头采集的是1080p数据,右图所示的结果非常清晰,完胜高清网络摄像头。
Kinect的中有两个红外摄像头(两个不能同时打开,其中一个是深度摄像头),一个光栅阵列,一个1080p摄像头,还有一个四相麦克风阵列,能够感知声音的方向,更多炫酷的功能以后再介绍吧。
