先从Kinect中读取深度图像,再用OpenCV显示出来。
1.深度图像
如下图所示,感应器可靠深度最小值到最大值的范围是500-4500,实际上这个范围是微软定义的,是固定值,说是适合用作人体骨架追踪,实际上这个值可以取到更大。
深度图像中每一个点的值都代表该点离感应器的距离,离越远,值越大。在显示出来后,就是越接近白色的部分越远,越接近黑色的部分越近。
代码如下:
#include <iostream>
// OpenCV 头文件
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
// Kinect for Windows SDK 头文件
#include <Kinect.h>
using namespace std;
int main(void)
{
// 1a.获取感应器
IKinectSensor* pSensor = nullptr;
GetDefaultKinectSensor(&pSensor);
// 1b. 打开感应器
pSensor->Open();
// 2a. 取得深度数据
IDepthFrameSource* pFrameSource = nullptr;
pSensor->get_DepthFrameSource(&pFrameSource);
// 2b. 取得深度数据的描述信息(宽、高)
int iWidth = 0;
int iHeight = 0;
IFrameDescription* pFrameDescription = nullptr;
pFrameSource->get_FrameDescription(&pFrameDescription);
pFrameDescription->get_Width(&iWidth);
pFrameDescription->get_Height(&iHeight);
pFrameDescription->Release();
pFrameDescription = nullptr;
// 2c.