Я новичок в Kinect. Я работаю над проектом дополненной реальности в Visual Studio, используя c ++.
Я ищу способ получить все координаты точек (X, Y, Z) через kinect, но мне сложно разобраться с этим. Может ли кто-нибудь помочь мне с этим?
Как я могу получить очки из потока глубины?
Я использую Kinect V1 для Xbox 360.
Предполагая Kinect v2: самый простой способ сделать это с помощью ICoordinateMapper::MapDepthFrameToCameraSpace
(см. документы Вот).
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.
Редактировать:
Для легкого начала:
Других решений пока нет …