~~有兴趣的小伙伴,加kinect算法交流群:462964980。
Kinect Data Sources – 6种数据源
(1)ColorFrameSource
(2)InfraredFrameSource
(3)DepthFrameSource
(4)BodyIndexFrameSource
(5)BodyFrameSource
(6)AudioSource
获取这六种数据源的目的是为了得到最终需要的数据,Kinect v2中获取并处理数据源接口步骤如下:
Sensor -> Source -> Reader -> Frame -> Data
以C++读取彩色图像为例:
第一步:打开Kinect传感器:
hr = GetDefaultKinectSensor(&m_pKinectSensor);
hr = m_pKinectSensor->Open();
第二步:显示数据源的源数据并为阅读器(readers)提供途径、为传感器每个数据提供一种数据源。
hr = m_pKinectSensor->get_ColorFrameSource(&pColorFrameSource);
第三步:提供获取帧的途径(事件机制、轮询机制)。
hr = pColorFrameSource->OpenReader(&m_pColorFrameReader);
第四步:发送帧事件参数。
获取最近一帧的数据。
hr = m_pColorFrameReader->AcquireLatestFrame(&pColorFrame);得到这每一帧的数据,就可以不用kinect提供的sdk,做点对图像想做的事情。
获取最近一帧ID为iFace的人脸数据。
hr = m_pFaceFrameReaders[iFace]->AcquireLatestFrame(&pFaceFrame);
第五步:提供获取数据的途径、包含了帧中的元数据(彩色帧、帧格式、宽度、高度等)、更重要的是,它可以减少获取帧的时间(不会提供不需要的处理帧)
例如:
1、获取ID为iFace的脸部帧:
hr = pFaceFrame->get_FaceFrameResult(&pFaceFrameResult);
然后通过pFaceFrameResult能够获取更多的脸部信息。
2、获取每帧的描述,进而得到,帧的高度、宽度等信息。
hr = pColorFrame->get_FrameDescription(&pFrameDescription);
hr = pFrameDescription->get_Width(&nWidth);
hr = pFrameDescription->get_Height(&nHeight);