博主最近开始玩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摄像头,还有一个四相麦克风阵列,能够感知声音的方向,更多炫酷的功能以后再介绍吧。