Kinect V2开发(2)从Kinect获取数据
2017-11-04 13:37
676 查看
在Kinect for windows SDK2.0中,Kinect有多种类型的数据源,每个类型的数据都有三个类与之对应:Source,Reader和Frame。要读取骨架,就有IBodyFrameSource, IBodyFrameReader, IBodyFrame这三个类,要读取深度数据,就有IDepthFrameSource, IDepthFrameReader, IDepthFrame这三个类,以此类推其他的如Body Index,Infrared,Color数据也是这样命名的。
在Kinect for windows SDK2.0中,获取并处理数据源接口步骤如下:
Sensor -> Source -> Reader -> Frame -> Data
1.Sensor
这个函数用来获取预设的感应器,括号里填自己的预设名字就可以,然后就可以设置传感器的状态。
eg:
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()描述彩色数据帧的具体信息
总结来说,流程如下
GetDefaultKinectSensor() → IKinectSensor
get_ColorFrameSource() → IColorFrameSource
OpenReader() → IColorFrameReader
AcquireLatestFrame() → IColorFrame
获取到数据之后就可以进行后续的数据处理啦~
参考资料
官方文档:介绍接口、函数以及Kinect结构等
Kinect for Windows C++ Reference
Heresy博客
Kinect for Windows SDK v2 C++ API 簡介
在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()描述彩色数据帧的具体信息
总结来说,流程如下
GetDefaultKinectSensor() → IKinectSensor
get_ColorFrameSource() → IColorFrameSource
OpenReader() → IColorFrameReader
AcquireLatestFrame() → IColorFrame
获取到数据之后就可以进行后续的数据处理啦~
参考资料
官方文档:介绍接口、函数以及Kinect结构等
Kinect for Windows C++ Reference
Heresy博客
Kinect for Windows SDK v2 C++ API 簡介
相关文章推荐
- Kinect V2 开发专题(4)骨骼/深度/红外/摄像头数据获取
- Kinect for windows 开发入门 八:景深数据获取和使用 下
- Kinect V2 开发专题(3)设备信息获取与音频功能探索
- Kinect开发(2)-景深数据获取
- Kinect for windows 开发入门 十:语音数据的获取和使用
- Kinect for windows 开发入门 五:彩色数据获取和使用
- Kinect for windows 开发入门 七:景深数据获取和使用 上
- Kinect V2 开发专题(3)设备信息获取与音频功能探索
- kinect sdk开发入门WPFdemo笔记[2] 获取深度数据
- Kinect for windows 开发入门 九:骨骼数据获取和使用
- Kinect V2彩色数据用OpenCV显示
- 小程序post提交获取数据,与服务器通信-小程序支付开发-视频教程5
- 基于kinect1的RGB和depth数据获取并对齐
- ECharts开发实战(1) ---- ECharts获取Java后台JSON数据,渲染显示图表
- ubuntu OpenCV读取KinectV2数据
- Kinect for Windows V2和V1对比开发___骨骼数据获取并用OpenCV2.4.10显示
- Kinect开发学习笔记之(四)提取颜色数据并用OpenCV显示
- SilverLight商业应用程序开发---学习笔记(5)从服务器中获取数据之一
- Android开发18——获取网络资源之json数据
- Kinect V2 与 V1 的区别 和 V1 骨骼数据 串口传输时卡死解决。