您的位置:首页 > 其它

kinect 2获取数据流程介绍(强烈推荐入门新手)

2019-05-27 11:16 232 查看

原文链接:

Kinect V2开发(2)从Kinect获取数据

  学习Kinect 2需要参看许多程序样例,这篇文章可以帮助新手更快地看懂关于kinect学习的程序样例。
  在Kinect for windows SDK2.0中,Kinect有多种类型的数据源,每个类型的数据都有三个类与之对应:SourceReaderFrame。例如,要读取骨架,就有IBodyFrameSource, IBodyFrameReader, IBodyFrame这三个类,要读取深度数据,就有IDepthFrameSource, IDepthFrameReader, IDepthFrame这三个类,以此类推其他的如Body Index,Infrared,Color数据也是这样命名的。

  在Kinect for windows SDK2.0中,获取并处理数据源接口步骤如下:

Sensor -> Source -> Reader -> Frame -> Data


1.Sensor

GetDefaultKinectSensor()

  这个函数用来获取预设的感应器,括号里填自己的预设名字就可以,然后就可以设置传感器的状态。

eg:

GetDefaultKinectSensor(&IKinectSensor);  //获取感应器
IKinectSensor->Open();            //打开感应器

2.Source

  在IKinectSensor下,有这样一些函数成员,通过调用它们,可以获取相应的数据。
IKinectSensor (对应到感应器)
get_DepthFrameSource() -> IDepthFrameSource (深度图像来源)
get_ColorFrameSource() -> IColorFrameSource (彩色图像来源)
get_InfraredFrameSource() -> IInfraredFrameSource (红外图像来源)
get_AudioSource() -> IAudioSource (声音来源)
get_BodyFrameSource() -> IBodyFrameSource (人体骨架信息来源)
get_BodyIndexFrameSource() -> IBodyIndexFrameSource (人体在深度图像中的位置信息来源)
……

  以source结尾的,都是数据的来源,我们并不能直接使用这些数据,需要通过另外的函数读取。

3.Reader

  通过 OpenReader() 这样一个函数,我们可以取得对应的 ’ Frame Reader’ 来读取数据

  以IColorFrameSource为例,我们可以通过OpenReader()函数取得IColorFrameReader,并通过它来读取数据。



4.Data

  通过AcquireLatestFrame(),我们可以获取最新的数据,并且装入另一个数据帧里,但是这个函数必须要判断是否返回一个成功值,因为获取失败的几率非常高。

  以IColorFrameReader为例,获取到的最新数据保存至IColorFrame中


5.数据处理

  读取到数据帧后,我们通过AccessUnderlyingBuffer()这个函数将数据复制到数组,这个函数有两个参数,第一个是个记录大小的变量,第二个是个接受数据的数组指针,传入后会分别返回数组的大小以及数据。它传入数组的数据代表的是那一个像素点上的物体距离传感器的位置。

  我们也可以通过get_FrameDescription()描述彩色数据帧的具体信息

6总结

kinect 2 获取数据流程如下:

  • GetDefaultKinectSensor() → IKinectSensor
  • get_ColorFrameSource() → IColorFrameSource
  • OpenReader() → IColorFrameReader
  • AcquireLatestFrame() → IColorFrame

获取到数据之后就可以进行后续的数据处理啦~

参考资料
官方文档:介绍接口、函数以及Kinect结构等
Kinect for Windows C++ Reference
Heresy博客
Kinect for Windows SDK v2 C++ API 簡介

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: