首页 文章

Kinect深度和彩色图像

提问于
浏览
0

我的深度图有点问题,点颜色图,我只是阈值近似深度(约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)但我的问题是,点不一样..我想我需要找到两个图像之间的一些关系,但是如何:)!

http://postimg.org/image/hyxt25bwd/

2 回答

  • 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
    
  • 0

    我不确定你是否已经解决了对齐的问题,但是这已经在你已经使用的OpenCVKinect Wrappers中实现了 .

    要从Kinect获取对齐的深度和颜色图像,您需要使用 setMode 函数,如下所示:

    setMode(C_MODE_DEPTH | C_MODE_COLOR | C_MODE_ALIGNED);
    

相关问题