如何在C ++中从Kinect获取XYZ坐标

时间:2015-11-11 06:39:18

标签: c++ opencv augmented-reality kinect-sdk

我是kinect的新手。我正在使用c ++开发Visual Studio中的增强现实项目。 我正在寻找一种通过kinect得到所有点坐标(X,Y,Z)的方法,但是我很难搞清楚它。任何人都可以帮助我吗? 我如何从深度流中获得积分?

我正在使用Kinect V1 for xbox 360。

1 个答案:

答案 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函数GetDepthCameraIntrinsicsGetDepthFrameToCameraSpaceTable并将这些数据与框架一起保存,以允许离线转换为XYZ。

修改

轻松入门: