KinectV2结合opencv3.41入门开发

本系统所使用的开发环境版本是计算机系统Windows 10、Visual Studio 2015、Opencv3.41和Kinect SDK v2.0

一、开发环境配置

1.Visual Studio 2015安装

http://www.afanihao.cn/vs.jsp这个网址直接有vs08到15的版本,选择2015版本的安装。注意:Kinect SDK v2.0需要2012版本以上的。就不用从官方下载那么麻烦了,因为本人也是在这个作者里面的课程学习有关知识。

2.Opencv3.41安装

https://github.com/opencv/opencv/tree/3.4.1当时下载的版本是3.41,opencv版本也在不断更新,每个版本的里面都会有兼容性有变化,我是因为参考了另外一篇博客(下文会给出)它用的是3.0版本,导致后来再VS2015上调试时发生版本冲突X86和x64(下文会给出详细内容)

第一步,配置环境变量。【此电脑】-【(右键)属性】-【高级系统设置】-【环境变量】。如图

,像本人的就是这样的C:\Users\moy\Downloads\opencv\build\x64\v14;C:\Users\moy\Downloads\opencv\build\x64\v15;不同的安装路径添加到内容不一样,不要直接复制本文的,找到自己的安装路径。这样环境变量就配置好了。

温馨提示:环境变量配置好后一般需要重启电脑才会生效。我的windows10就不用重启电脑,可能是系统问题。

第二步,新建一个VS2015的控制台工程,添加一个空cpp源文件。如图,我创建的名字叫ConsoleApplication2

接着点击ConsoleApplication2右键-属性,变成如下图

(1)配置包含目录。【通用属性】-【VC++目录】-【包含目录】,再点击【编辑】按钮,添加opencv安装路径下的include文件夹和其子文件下,本人的是:

C:\Users\moy\Downloads\opencv\build\include

C:\Users\moy\Downloads\opencv\build\include\opencv

C:\Users\moy\Downloads\opencv\build\include\opencv2

配置库目录,方法类似包含目录的配置方法,【通用属性】-【VC++目录】-【库目录】,再点击【编辑】按钮,添加安装路径下的X86文件夹里面的lib文件夹,因为我们一般都是使用win32编译器。本人的是

C:\Users\moy\Downloads\opencv\build\x64\vc14\lib

C:\Users\moy\Downloads\opencv\build\x64\vc15\lib

配置链接库,方法类似。【通用属性】-【连接器】-【输入】-【附加依赖项】,再点击【编辑】按钮。添加安装路径下lib文件夹里面的,lib文件名,opencv3.0的lib文件包含有

opencv_world341.lib

opencv_world341d.lib

其中带d的是debug版本lib文件,不带d的是release版本的lib文件。

经过以上两大步五小步的配置之后,opencv3.0就配置好了。

接着就是调试代码看是否配置好opencv3.0

3.Kinect SDK v2.0

去官网直接下载下来,双击安装就行,然后在VS2015里面添加一下相关的库目录和链接库的附加依赖项。在【包含目录】中加入【$(KINECTSDK20_DIR)\inc】

在【库目录】中加入【$(KINECTSDK20_DIR)\Lib\x86】

在【链接器】的【输入】里,【附加依赖项】中加入【kinect20.lib】。下载地址https://www.microsoft.com/en-us/download/details.aspx?id=44561

调试代码如下,把代码复制到刚刚创建的项目中然后运行调试。

  1. #include <Kinect.h>       //Kinect的头文件  
  2. #include <iostream>  
  3. #include <opencv2\highgui.hpp>            //opencv头文件  
  4.   
  5. using   namespace   std;  
  6. using   namespace   cv;  
  7. int main(void)  
  8. {  
  9.     IKinectSensor   * mySensor = nullptr;  
  10.     GetDefaultKinectSensor(&mySensor);  //获取感应器  
  11.     mySensor->Open();           //打开感应器  
  12.   
  13.     IDepthFrameSource   * mySource = nullptr;   //取得深度数据  
  14.     mySensor->get_DepthFrameSource(&mySource);  
  15.   
  16.     int height = 0, width = 0;  
  17.     IFrameDescription   * myDescription = nullptr;  //取得深度数据的分辨率  
  18.     mySource->get_FrameDescription(&myDescription);  
  19.     myDescription->get_Height(&height);  
  20.     myDescription->get_Width(&width);  
  21.     myDescription->Release();  
  22.   
  23.     IDepthFrameReader   * myReader = nullptr;         
  24.     mySource->OpenReader(&myReader);    //打开深度数据的Reader  
  25.   
  26.     IDepthFrame * myFrame = nullptr;  
  27.     Mat temp(height,width,CV_16UC1);    //建立图像矩阵  
  28.     Mat img(height,width,CV_8UC1);  
  29.     while (1)  
  30.     {  
  31.         if (myReader->AcquireLatestFrame(&myFrame) == S_OK) //通过Reader尝试获取最新的一帧深度数据,放入深度帧中,并判断是否成功获取  
  32.         {  
  33.             myFrame->CopyFrameDataToArray(height * width, (UINT16 *)temp.data); //先把数据存入16位的图像矩阵中  
  34.             temp.convertTo(img,CV_8UC1,255.0 / 4500);   //再把16位转换为8位  
  35.             imshow("TEST", img);  
  36.             myFrame->Release();  
  37.         }  
  38.         if (waitKey(30) == VK_ESCAPE)  
  39.             break;  
  40.     }  
  41.     myReader->Release();        //释放不用的变量并且关闭感应器  
  42.     mySource->Release();  
  43.     mySensor->Close();  
  44.     mySensor->Release();  
  45.   
  46.     return  0;  
  47. }  

若没有出现错误,弹出对话框表示配置完成恭喜你!

原文参考连接https://blog.csdn.net/baolinq/article/details/52356947(里面博客的opencv版本是Opencv3.0和Visual Studio 2013)

创作不易,希望各位大佬可以资助下,有时间我会把剩下的一系列课程出完。

猜你喜欢

转载自blog.csdn.net/weixin_41517975/article/details/80570973