关于Kinect SDK V2的使用要点和开发环境搭建

前言

  • 记录自己在微软官网学习Kinect SDK V2的一些思考看法和一些使用这个SDK很重要的关键点;
  • 本人的SDK使用以及OpenCV环境的搭建的研究背景是改进Kinect的人体骨骼数据识别算法;
  • 有一些新的思考也会及时加入这篇文章中。

SDK中的函数返回值

  • SDK中的所有的函数返回值都是HRESULT,它是用来表示函数执行状态的,如果成功则返回 S_OK;否则,返回失败代码。
  • 也就是说函数返回的并不是操作的相关对象,而是方法执行状态是否正确。
  • 想对一些数值或者物体做修改,只能把数值或物体当作引用参数传入相关函数,让函数去修改它原本的值。也就是说所有的函数参数列表中都需要使用引用符号 &,这是特别重要的一点!这是一个我们使用SDK V2贯穿全过程的一个基本思想,可能和我们平时写代码的思想不一样,这一点我们需要去适应它。

关于Kinect SDK V2的使用要点和开发环境搭建_第1张图片

  • 这是一个拿到Kinect传感器指针的示例
IKinectSensor* pSensor = nullptr;
if (GetDefaultKinectSensor(&pSensor) != S_OK)
{
	cerr << "Get Sensor failed" << endl;
	return -1;
}

如何拿到最终的数据

  • 利用函数GetDefaultKinectSensor()IKinectSensor得到Kinect这个传感器的指针后,我们依次需要经过 Source ->Reader -> Frame三个方法才能最终拿到数据;
  1. 通过IKinectSensor的成员方法,获取资料来源Frame Srouce;例如 IDepthFrameSource
  2. 针对资料来源物件,利用其成员函数取得资料读取器 Frame Reader;例如 IDepthFrameReader
  3. 不断通过资料读取器,去读取相应的资料 Frame;例如 IDepthFrame (需检查资料是否读取成功,若成功就对读取到的资料进行处理)
  • 同时以上这些物件使用之后都及时释放资源,如
pFrameSource->Release();
pFrameSource = nullptr;

两种操作模式

在资料读取的架构上,SDK提供了两种操作模式,

  • 事件导向 event
  • 轮询 polling

对所有获取KInect数据的流程进行总结

大部分对Kinect的操作都是需要通过 IKinectSenor 这个接口开始操作的,然后->Open()打开传感器,定义相应的Srouce接口 I开头令其为空指针 nullptr,用传感器get_***Source()得到Srouce,然后再用Srouce->OpenReader()得到Reader,用Reader-> ·AcquireLatestFrame· 得到最终的数据 Frame ,有了Frame我们就可以根据API获取到对应的数据了,每个Frame都有自己的独特方法,需要看具体API进行操作。


Kinect中的三种坐标系及相互转换的方法

  • 通过官网的C++ Reference我们可以看到在Kinect一共有三种坐标系,分别是CameraSpacePointDepthSpacePointColorSpacePoint,其中只有CameraSpacePoint是三维坐标,剩下的都是以二维坐标存储着。
typedef struct _CameraSpacePoint {
    float X;
    float Y;
    float Z;
} CameraSpacePoint;
  • 当我们需要对不同坐标转换时,SDK有提供相应的坐标转换器,这三者之间可以实现互相转换,通过Kinect传感器,我们就可以得到一个CoordinateMapper坐标转换器了。
ICoordinateMapper* pCoordinateMapper = nullptr;
if (pSensor->get_CoordinateMapper(&pCoordinateMapper) != S_OK)
{
	cout << "Can't get coordinate mapper" << endl;
	return -1;
}
  • 然后我们就可以使用其相应方法,来进行坐标转换了

关于Kinect SDK V2的使用要点和开发环境搭建_第2张图片


Kinect SDK V2在Visual Studio 2019中的环境配置

在官网下载好了SDK V2之后,我们还要在具体代码中进行配置,让环境能够找到相应的库函数和头文件。这里以Visual Studio 2019为例进行环境配置.

  1. 首先,新建个项目,然后在【解决方案资源管理器】中右键项目名,选择【属性】

  2. 在【C/C++】的【常规】里,【附加包含目录】中加入【$(KINECTSDK20_DIR)\inc】
    关于Kinect SDK V2的使用要点和开发环境搭建_第3张图片

  3. 在【链接器】的【常规】里,【附加库目录】中加入【$(KINECTSDK20_DIR)\Lib\x64】
    关于Kinect SDK V2的使用要点和开发环境搭建_第4张图片

  4. 在【链接器】的【输入】里,【附加依赖项】中加入【kinect20.lib】
    关于Kinect SDK V2的使用要点和开发环境搭建_第5张图片


OpenCV在Visual Studio 2019中的环境配置

  • 使用Kinect进行项目开发时,很有可能需要用到OpenCV进行一些机器视觉方面的函数处理。这边同时也记录下自己在IDE上部署OpenCV环境的配置过程。

OpenCV(全称Open Source Computer VisionLibrary)是一个开源的计算机视觉库,它可以用于实时图像处理、计算机视觉、机器学习和深度学习等应用。OpenCV最初是由英特尔公司开发,现在已经成为了一个由开源社区维护的跨平台计算机视觉库,支持各种平台(Windows、Linux、MacOS等)和编程语言(C++、Python、Java等)。

OpenCV提供了大量的图像处理和计算机视觉算法,包括图像滤波、边缘检测、形态学操作、特征检测、特征匹配、目标跟踪、人脸识别、物体识别等。它还支持图像和视频的读取、显示和保存,可以方便地与其他开源库集成,如NumPy、SciPy和Matplotlib等。

OpenCV的优点包括易于使用、高效、跨平台、支持多种编程语言、具有丰富的算法和工具库等。因此,它在计算机视觉和图像处理领域得到了广泛的应用,包括机器人技术、自动驾驶、安防监控、医学影像、工业检测等多个领域

  1. 环境变量配置 ,在系统变量中将OpenCV对应的bin路径加入到【PATH】中
D:\OpenCV\opencv\build\x64\vc15\bin
  1. 右键点开项目的【属性页】,然后找到【VC++目录】,在【包含目录】中输入以下内容
D:\OpenCV\opencv\build\include\opencv2  
D:\OpenCV\opencv\build\include\opencv2

关于Kinect SDK V2的使用要点和开发环境搭建_第6张图片

  1. 添加【库目录】,输入【D:\OpenCV\opencv\build\x64\vc15\lib】

关于Kinect SDK V2的使用要点和开发环境搭建_第7张图片

  1. 在【链接器】的【常规】中,找到【附加依赖项】,输入【opencv_world460d.lib】(460是opencv相应版本号的缩写)

关于Kinect SDK V2的使用要点和开发环境搭建_第8张图片


Opencv拓展模块安装opencv_contrib

在进行骨架细化的时候才发现opencv自身是没有【opencv2/ximgproc.hpp】这个头文件配置的,上网查了才发现原来还需要额外安装一个opencv_contrib,而且比安装opencv还要麻烦,还需要用到cmake对其文件进行编译。

软件下载

  1. 首先在cmake官网下载最新版
  2. 然后在opencv官网下载和opencv版本相符的opencv_contrib
    下载完之后解压到opencv目录下就行,然后还需要在opencv目录下新建一个文件夹【bulid_new】用来存放contrib编译后的文件
    关于Kinect SDK V2的使用要点和开发环境搭建_第9张图片

文件编译

  1. 打开cmake开始编译文件
  • 在where is the source code中选择openCV的源代码目录:【D:\OpenCV\opencv\sources】
  • 在where to build the binaries中选择编译后文件存放的目录:【D:\OpenCV\opencv\build_new】
  • 然后直接点【Configure】等待一段时间后(挺久的其实)
  • 在cmake搜索框中搜索OPENCV_EXTRA_MODULES_PATH,将其值选择为opencv_contrib目录中的modules目录,此时就可以看到cmake里面的红色部分消失了。
  • 最后,单击【Generate】进行编译,显示“Generate down”表示编译完成。

重新生成解决方案

  1. 重新生成解决方案
  • 在new_build目录中找到【OpenCV.sln】,用visual2019打开,然后切换到Debug模式下
  • 在解决方案中选中项目,右键选择重新生成解决方案
  • 之后项目下文件夹中找到【CMakeTargets】中的【INSTALL】,然后右键选择【仅限于项目】–>【仅生成INSTALL】,此时就会发现会【build_new】文件夹下重新生成一个【install】文件夹,环境配置所需的文件均在里面。

环境配置

  • 以上是我整理出的网络下载教程,但是实际环境中,安装这个要等很久,我没有耐心等,直接花钱买编译好的安装包,以上流程后续会继续补充。

你可能感兴趣的:(Kinect开发,c++,opencv,microsoft)