深度图用JPEG格式保存最多保存8位数据,像素值域0-255,肯定会丢失大量数据,而PNG格式支持16位数据的存储,因此多数深度图应该都是PNG格式储存的。位数均指的是单个通道内单个像素数据的格式,比如8位是uint8_t(uchar),16位是uint16_t(ushort)。当然,在用OpenCV存取过程中需要注意方式方法,否则可能会被转换成8位数据。比如C++读取时,使用以下参数:CV_LOAD_IMAGE_ANYCOLOR|CV_LOAD_IMAGE_ANYDEPTH
。
更多有关imread函数读取的时候应该使用哪些参数以及对于同一个文件不同参数返回的数据有什么不同请见OpenCV文档。
https://docs.opencv.org/4.2.0/d4/da8/group__imgcodecs.html#ga61d9b0126a3e57d9277ac48327799c80
其次,个人看法,你将16位数据保存为8位数据的过程中,只保存了每个像素点低8位信息,因此你看见的JPEG图片,应该是低八位在0-255之间的像素,比如本来值就小的像素,还有值在某个区间,正好低8位在0-255之间的像素,其他区域,应该是低8位恰好为255,所以一片死白。
作者:CHAI Ziqi
链接:https://www.zhihu.com/question/29641154/answer/1145015886
来源:知乎