通过激光雷达或深度估计得到的深度图一般为float32或float64类型数据,具有超大量数据,保存为常见的jpg格式图像(uint8:80-255)时则会损失数据精度,如果保存为.npy文件时则文件大小过大(eg:1280*1920大小的深度数组保存后所占空间为37.5Mb),因此需要处理下数据再进行保存。
1.考虑根据深度图精度信息将float32数据转为uint16或int16数据,比如常用激光雷达获取的深度图单位为米,我们取精度为厘米,则将含有深度信息的数组depth_map_m(1280x1920) 从以米为单位的float64转为以厘米为单位的uint16,depth_map_cm
depth_map_cm = depth_map_m * 100
depth_map_cm_uint16 = depth_map_cm.astype(np.uint16)
2.1可以将该16为深度图以png、tif等格式储存
cv2.imwrite(save_dir, depth_map_cm_uint16)
2.2也可以将该16为深度图以npy格式储存
np.save(save_dir, depth_map_cm_uint16)
存储方式选择:
两种存储方式各有优缺点:
存储空间方面:
cv2.imwrite:得到数据经过压缩,因此占用空间少,上述例子得到的png大小仅521kb
np.save:得到的数据占用空间较大,上述例子得到的npy大小为4.68mb
读取速度方面:
cv2.imwrite:后续加载数据较慢,上述例子加载用时约0.017s
np.save:后续加载数据较快,上述例子加载用时约0.003s
文章来源:https://www.toymoban.com/news/detail-524880.html
可以根据自己需求选择文章来源地址https://www.toymoban.com/news/detail-524880.html
到了这里,关于16bit深度图保存方式:opencv png格式和numpy npy格式对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!