社区已经帮助我指导了这个项目。
我正在使用R200相机,Visual Studio 2015,C++,Windows 10和OpenCV 3.1。
我目前在左右红外摄像机中分别进行图像预处理以识别物体。我需要对象几何中心的坐标(x,y,z),因此我必须进行坐标映射,但是SDK只允许在深度和RGB之间进行:
// Create the PXCProjection instance.
PXCProjection *projection=device->CreateProjection();
// color and depth image size.
PXCImage::ImageInfo dinfo=depth->QueryInfo();
PXCImage::ImageInfo cinfo=color->QueryInfo();
// Calculate the UV map.
PXCPointF32 *uvmap=new PXCPointF32[dinfo.width*dinfo.height];
projection->QueryUVMap(depth, uvmap);
// Translate depth points uv[] to color ij[]
for (int i=0;i<npoints;i++) {
ij[i].x=uvmap[(int)uv[i].y*dinfo.width+(int)uv[i].x].x*cinfo.width;
ij[i].y=uvmap[(int)uv[i].y*dinfo.width+(int)uv[i].x].y*cinfo.height;
}
// Clean up
delete[] uvmap;
projection->Release();
有谁知道如何在左右红外与深度之间进行映射?还是在其默认IR左或右RGB中让我进行深度映射?
非常感谢你。
最佳答案
首先,我需要找出如何将在一个红外摄像机上检测到的特定点映射到深度图像。因此,我的最终解决方案是从RGB图像和映射到深度的结果中减去感兴趣的扇区(在IR Left摄像机中检测到,该摄像机最接近彩色摄像机)。
差距存在,但并不过分。
https://i.stack.imgur.com/hjCjD.png