16bit深度图保存方式:opencv png格式和numpy npy格式对比

通过激光雷达或深度估计得到的深度图一般为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
在这里插入图片描述

可以根据自己需求选择

猜你喜欢

转载自blog.csdn.net/SmaICG/article/details/130202932
今日推荐