我的深度图有点问题,点颜色图,我只是阈值近似深度(约70-80厘米),然后我按位和阈值深度图像到相应的颜色图,
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)但我的问题是,点不一样..我想我需要找到两个图像之间的一些关系,但是如何:)!
2 回答
我会看到Why kinect color and depth won't align correctly?因为他们在matlab中遇到了类似的问题 . 答案建议使用OpenNI的AlternateViewCapability类来对齐图像 . 这是旧版OpenNI(1.5)的文档,因为我找不到C的2.0文档,但可能有类似的方法 . 该答案上的图像显示了转变的差异 .
代码本质上是
我不确定你是否已经解决了对齐的问题,但是这已经在你已经使用的OpenCVKinect Wrappers中实现了 .
要从Kinect获取对齐的深度和颜色图像,您需要使用
setMode
函数,如下所示: