首先定义一个16位的深度图
cv::Mat depth_mat = cv::Mat(height, width, CV_16UC1);
十六位的深度图,取像素值的时候,不能用
id = i*width + j ;
depth_mat.data[id];
的方式,是被https://blog.csdn.net/qq_36955294/article/details/84140788 里面的视差转深度图的函数带偏了!!!得用
depth_mat.at<uint16_t>(i, j)
的形式去读取16位深度图的像素值,这样不管是取值还是赋值,都是8位的,不是16位,所以导致了一系列的问题,你深度值算得正确,赋值也没有赋上去。