win10 64位+Kinect 2.0+VS 2013+opencv开发环境搭建及深度图像读取

来源:互联网 发布:惠普网络驱动官方下载 编辑:程序博客网 时间:2024/06/05 12:47
1.kinect 2.0 开发需求:window 8/windows8.1 、windows10,USB 3.0 接口,VS 2012及以上。
2.本文开发环境为 Windows10 64位 +  VS2013 + opencv2.4.9 + kinect for Windows SDK 2.0
3.下载kinect for Windows sdk 2.0,下载地址:http://www.k4w.cn/news/1.html
4.下载opencv2.4.9压缩包,解压至指定位置并配置系统环境变量,需要在原系统环境变量Path后面追加两条:
opencv安装路径\opencv\bulid\x86\vc12\bin;
opencv安装路径\opencv\bulid\x64\vc12\bin;
然后重启电脑使得配置生效。
4.然后打开VS2013新建C++ Win32 控制台应用程序,并对其属性进行配置,配置模式为 debug|x64:
             4.1属性->VC++目录->包含目录添加:
                  opencv安装路径\opencv\bulid\include
                  opencv安装路径\opencv\bulid\include\opencv
                  opencv安装路径\opencv\bulid\include\opencv2
                  C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\inc
             4.2属性->VC++目录->库目录添加:
                  E:\Program Files\opencv-2.4.9\opencv\build\x64\vc12\lib
                  C:\Program Files\Microsoft SDKs\Kinect\v2.0_1409\Lib\x64 
             4.3属性->链接器->输入->附加依赖项
                  opencv_calib3d249d.lib
                  opencv_contrib249d.lib
                  opencv_core249d.lib
                  opencv_features2d249d.lib
                  opencv_flann249d.lib
                  opencv_gpu249d.lib
                  opencv_highgui249d.lib
                  opencv_imgproc249d.lib
                  opencv_legacy249d.lib
                  opencv_ml249d.lib
                  opencv_objdetect249d.lib
                  opencv_ts249d.lib
                  opencv_video249d.lib
                  Kinect20.lib
配置过程将opencv与Kinect过程同时进行,也可分开配置,32位编译器模式下需修改其中64位文件的
路径为32位文件的路径即可,至此配置完成,可在配好环境的项目下新建一个CPP文件进行如下测试:



#include <Kinect.h>#include <iostream>#include <opencv2\highgui\highgui.hpp>using   namespace   std;using   namespace   cv;int main(void){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();IDepthFrameReader   * myReader = nullptr;mySource->OpenReader(&myReader);    //打开深度数据的ReaderIDepthFrame * myFrame = nullptr;Mat temp(height, width, CV_16UC1);    //建立图像矩阵Mat img(height, width, CV_8UC1);while (1){if (myReader->AcquireLatestFrame(&myFrame) == S_OK) //通过Reader尝试获取最新的一帧深度数据,放入深度帧中,并判断是否成功获取{myFrame->CopyFrameDataToArray(height * width, (UINT16 *)temp.data); //先把数据存入16位的图像矩阵中temp.convertTo(img, CV_8UC1, 255.0 / 4500);   //再把16位转换为8位imshow("TEST", img);myFrame->Release();}if (waitKey(30) == VK_ESCAPE)break;}myReader->Release();        //释放不用的变量并且关闭感应器mySource->Release();mySensor->Close();mySensor->Release();return  0;}

阅读全文
0 0
原创粉丝点击