这个问题已经困扰了我好多天了,我采用的是MapColorFrameToDepthSpace这个方法来映射彩图和深度图的坐标,程序可以顺利运行,而且看似还真是产生了“对齐”之后的图像。可是当我仔细观察后发现,“对齐”图像的轮廓有很宽的空洞。如下图,右边是原始深度图像,坐标是从彩色图映射之后得到的“对齐”图像(本应该是1920*1080,我用opencv来resize了一下)。明显可以看到后脑勺部分很大一块黑色的重影。。。我已经调了三天了,想不通问题到底在哪儿。
我觉得问题可能出在画图这一步,关键的map和画图部分代码如下,请各位大神一定帮忙看看啊,,这个问题折磨的我心力憔悴。。
if (SUCCEEDED(hr)){
rgbdImg.create(cColorHeight, cColorWidth, CV_8UC1); rgbdImg.setTo(0);
mapper->MapColorFrameToDepthSpace(cDepthWidth * cDepthHeight, (UINT16*)pDepthBuffer, cColorWidth * cColorHeight, dpoint);
for (int i = 0; i < 1080; i++){
for (int j = 0; j < 1920; j++){
DepthSpacePoint depthPoint = dpoint[i * 1920 + j];
if ((depthPoint.X >= 0) && (depthPoint.X < 512) && (depthPoint.Y >= 0) && (depthPoint.Y < 424))
{
rgbdImg.at<uchar>(i, j) = depthImg.at<uchar>(depthPoint.Y, depthPoint.X);
}
}
}
Mat rgbd; resize(rgbdImg, rgbd, Size(1920 / 3, 1080 / 3));
imshow("rgbd", rgbd);
}