Почему все координаты из QueryVertices равны нулю?

Для следующего кода:

Reads the depth data from the sensor and fills in the matrix
***/
void SR300Camera::fillInZCoords()
{
Image::ImageData depthImage;
Image *depthMap = sample->depth;
depthMap->AcquireAccess(Image::ACCESS_READ, &depthImage);
Image::ImageInfo imgInfo = depthMap->QueryInfo();
int depth_stride = depthImage.pitches[0] / sizeof(pxcU16);
Projection * projection = device->CreateProjection();
unsigned int wxhDepth = depth_width * depth_height;
Point3DF32* vertices = new Point3DF32[wxhDepth];
projection->QueryVertices(depthMap, vertices);
pxcU16 *dpixels = (pxcU16*)depthImage.planes[0];
unsigned int dpitch = depthImage.pitches[0] / sizeof(pxcU16); /* aligned width */

for (int k = 0; k < wxhDepth; k++) {
cout << "xx is " << vertices[k].x << endl;
cout << "yy is " << vertices[k].y << endl;
cout << "zz is " << vertices[k].z << endl;
}

}

Я просто получаю ноль за все напечатанное. Об этом говорится в документации SDK, чтобы преобразовать координаты UV-карты изображения глубины в пикселях в xyz-карту реального мира в мм. QueryVertices, Однако, для меня это просто возвращает 0. Я получаю как цветное, так и глубокое изображение, и я не уверен, что пошло не так.
Вот больше информации от отладки кода:введите описание изображения здесь

*

-       vertices    0x00000261e4934040 {x=0.000000000 y=0.000000000 z=0.000000000 } Intel::RealSense::Point3DF32 *
wxhDepth    307200  unsigned int
-       depthImage.pitches  0x00000075a2da9de0 {1280, 0, 0, 0}  int[4]
-       planes  0x00000075a2da9df0 {0x00000261e7542000 "", 0x0000000000000000 <NULL>, 0x0000000000000000 <NULL>, 0x0000000000000000 <NULL>} unsigned char *[4]
+       reserved    0x00000075a2da9dd4 {0, 0, 0}    int[3]
format  PIXEL_FORMAT_DEPTH (131072) Intel::RealSense::Image::PixelFormat

*

-1

Решение

Вот правильный ответ, чтобы получить xyzMap из UV-карты с изображением глубины:

PXCImage::ImageData depthImage;
depthMap->AcquireAccess(PXCImage::ACCESS_READ, &depthImage);
PXCImage::ImageInfo imgInfo = depthMap->QueryInfo();
depth_width = imgInfo.width;
depth_height = imgInfo.height;
num_pixels = depth_width * depth_height;
PXCProjection * projection = device->CreateProjection();
PXCPoint3DF32 *pos3D = new PXCPoint3DF32[num_pixels];
sts = projection->QueryVertices(depthMap, &pos3D[0]);
if (sts < Status::STATUS_NO_ERROR) {
wprintf_s(L"Projection was unsuccessful! \n");
sm->Close();
}
0

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

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

По вопросам рекламы [email protected]