我是kinect的新手。我正在使用c ++开发Visual Studio中的增强现实项目。 我正在寻找一种通过kinect得到所有点坐标(X,Y,Z)的方法,但是我很难搞清楚它。任何人都可以帮助我吗? 我如何从深度流中获得积分?
我正在使用Kinect V1 for xbox 360。
答案 0 :(得分:2)
假设Kinect v2:最简单的方法是使用ICoordinateMapper::MapDepthFrameToCameraSpace
(参见文档here)。
IKinectSensor *sensor;
UINT16 *depthPoints;
...
// initialize the sensor and grab a depth frame and get depthPoints
...
const int nPixels = 512 * 424;
std::vector<CameraSpacePoint> cameraPoints;
cameraPoints.resize(nPixels);
ICoordinateMapper *cm = dev->get_CoordinateMapper();
if (cm != nullptr) {
cm->MapDepthFrameToCameraSpace(nPixels, &depthPoints[0], nPixels, &cameraPoints[0]);
cm->Release();
}
// use XYZs in cameraPoints
请注意,这仅适用于您与设备的实时连接。如果您之前已将原始深度帧保存到磁盘并将其读回,例如在另一台计算机上,然后查看使用ICoordinateMapper
函数GetDepthCameraIntrinsics
或GetDepthFrameToCameraSpaceTable
并将这些数据与框架一起保存,以允许离线转换为XYZ。
修改强>
轻松入门: