gpt4 book ai didi

c++ - ProjectDepthToCamera 为 pos3d 的所有 xyz 返回 0

转载 作者:行者123 更新时间:2023-11-30 05:13:20 26 4
gpt4 key购买 nike

我不确定为什么在以下代码的 pos3d 中所有 x、y、z 值恰好为零。请提出修复建议:

/***
Reads the depth data from the sensor and fills in the matrix
***/
void SR300Camera::fillInZCoords()
{

PXCImage::ImageData depthImage;
PXCImage *depthMap = sample->depth;
depthMap->AcquireAccess(PXCImage::ACCESS_READ, &depthImage);
PXCImage::ImageInfo imgInfo = depthMap->QueryInfo();
cout << "inImg->QueryInfo() " << depthImage.format << endl;
PXCPoint3DF32 * pos2d = new PXCPoint3DF32[depth_width*depth_height];
int depth_stride = depthImage.pitches[0] / sizeof(pxcU16);

for (int y = 0, k = 0; y < depth_height; y++) {
for (int x = 0; x < depth_width; x++, k++) {
pos2d[k].x = (pxcF32)x;
pos2d[k].y = (pxcF32)y;
pos2d[k].z = ((short *)depthImage.planes[0])[y* depth_stride + x];
}
}

//Point3DF32 * pos3d = NULL;
PXCPoint3DF32 * pos3d = new Point3DF32[depth_width*depth_height];
PXCPoint3DF32 * vertices = new PXCPoint3DF32[depth_width * depth_height];
Projection * projection = device->CreateProjection();
projection->ProjectDepthToCamera(depth_width*depth_height, pos2d, pos3d);
cout << "x is " << pos3d->x*1000 << endl;
cout << "y is " << pos3d->y*1000 << endl;
cout << "z is " << pos3d->z*1000 << endl;

}

enter image description here

最佳答案

这是从深度图像 UV-Map 中获取 XYZ Map 的正确验证答案: 状态 sts = sm ->AcquireFrame(true);

    if (sts < STATUS_NO_ERROR) {
if (sts == Status::STATUS_STREAM_CONFIG_CHANGED) {
wprintf_s(L"Stream configuration was changed, re-initilizing\n");
sm ->Close();
}
}

sample = sm->QuerySample();
PXCImage *depthMap = sample->depth;
renderd.RenderFrame(sample->depth);
PXCImage::ImageData depthImage;
depthMap->AcquireAccess(PXCImage::ACCESS_READ, &depthImage);
PXCImage::ImageInfo imgInfo = depthMap->QueryInfo();
int depth_stride = depthImage.pitches[0] / sizeof(pxcU16);
PXCProjection * projection = device->CreateProjection();
pxcU16 *dpixels = (pxcU16*)depthImage.planes[0];
unsigned int dpitch = depthImage.pitches[0] / sizeof(pxcU16);
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();
}
for (int k = 0; k < num_pixels; k++) {

if (pos3D[k].x != 0) {
cout << " xx is: " << pos3D[k].x << endl;
}
if (pos3D[k].y != 0) {
cout << " yy is: " << pos3D[k].y << endl;
}
if (pos3D[k].z != 0) {
cout << " zz is: " << pos3D[k].z << endl;
}
}

关于c++ - ProjectDepthToCamera 为 pos3d 的所有 xyz 返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43990922/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com