opencv — Как получить координаты XYZ из Kinect в переполнении стека

Я новичок в Kinect. Я работаю над проектом дополненной реальности в Visual Studio, используя c ++.
Я ищу способ получить все координаты точек (X, Y, Z) через kinect, но мне сложно разобраться с этим. Может ли кто-нибудь помочь мне с этим?
Как я могу получить очки из потока глубины?

Я использую Kinect V1 для Xbox 360.

0

Решение

Предполагая 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.

Редактировать:

Для легкого начала:

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector