一、使用场景
在使用 AirSim 采集深度图的时候,如果图像类型选择:DepthPlannar(value = 1),并且 pixels_as_float = true,保存为 tiff 格式的深度图,经过测试,是正确的深度图。
而 open3D 的 tsdf demo 需要使用 16 位 png 格式的深度图,所以计划将 tiff 格式的深度图转化为 png 格式的深度图(也就是将 CV_32FC1 转换成CV_16UC1)
二、转化过程
cv::Mat depth_tiff_image; // 通过 AirSim 相机获取 tiff 深度图
cv::Mat depth_png_image; // 通过转化得到的 16 位 png 深度图
string depth_png_name = "depth.png";
// alpha 等于几 就需要将 tsdf 缩放深度改为几,tsdf 默认缩放深度为 1000,我这里也改为1000(默认是1)
depth_tiff_image.convertTo(depth_png_image, CV_16U, 1000);
imwrite(depth_png_name, depth_png_image);
三、注意事项
opencv 的 convertTo 函数可以改变 Mat 的深度,但不能改变 Mat 的通道数。