我的深度贴图有点问题,指向颜色贴图, 我只是将nearst深度(约70-80cm)阈值,然后按位和阈值深度图像到相应的颜色图,
Mat depthFilter(Mat depth,Mat color){
Mat I;
depth.convertTo(I, CV_8UC1, 255.0 / 4096.0);
unsigned char *input = (unsigned char*)(I.data);
for (int i = 0; i < I.cols; i++){
for (int j = 0; j < I.rows; j++){
int pixel = input[I.cols*j + i];
if (!(pixel <52 && pixel >42)){
input[I.cols*j + i] = 0;
}
else
{
input[I.cols*j + i] = 255;
}
}
}
cvtColor(color, color, CV_BGR2GRAY);
bitwise_and(I, color, I);
return I;
} (我使用OpenCvKinect,它使用OpenNi和OpenCv) 但我的问题是,要点不一样......我想我需要找到两个图像之间的关系,但是如何:)!
答案 0 :(得分:0)
我会看到Why kinect color and depth won't align correctly?,因为他们在matlab中遇到了类似的问题。答案建议使用OpenNI的AlternateViewCapability类来对齐图像。这是旧版OpenNI(1.5)的文档,因为我找不到C ++的2.0文档,但可能有类似的方法。答案上的图像显示了转变的差异。
代码基本上是
depth.GetAlternativeViewPointCap().SetViewPoint(image); //depth is depth generator
//image is color generator
答案 1 :(得分:0)
我不确定您是否已经解决了对齐问题,但这已在您已使用的OpenCVKinect Wrappers中实现。
要从Kinect获取对齐的深度和彩色图像,您需要使用setMode
功能,如下所示:
setMode(C_MODE_DEPTH | C_MODE_COLOR | C_MODE_ALIGNED);