介绍
在使用D435i相机读取和显示深度图的时候,看到程序中有这么一句话:
depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(depth_image, alpha=0.03), cv2.COLORMAP_JET)
就很奇怪,depth_image 明明是2维数据,但经过该程序转换后,得到了一个3D数据。而且里面的数据大小也变了。
官方备注该程序为:渲染图像。但是这个“渲染”,本身已经是一个很大的领域了,在各种基于3D模型的目标跟踪论文中都能看到,但我目前还不知道该用法的意义是什么。
说回以上python语句,其中包含了两个函数:cv2.applyColorMap
和 cv2.convertScaleAbs
。搞明白这两个函数都是怎么运转的就能明白上述语句。
解释
1. cv2.convertScaleAbs
参考网址:python opencv 4.1.0 cv2.convertScaleAbs()函数 (通过线性变换将数据转换成8位[uint8])(用于Intel Realsense D435显示depth图像)
上述网址给出了函数cv2.convertScaleAbs
的计算过程,包括计算步骤和用到的公式。
为了省事,这里只做总结:
cv2.convertScaleAbs
将输入的深度图,按照颜色显示出来。比如说,设置6米处为最远有效距离,那么[0,6]米内的距离应该按照[0-255, 0-255,0-255] 的颜色范围显示出来。大于6米的距离和6米显示相同的颜色。
2. cv2.convertScaleAbs
参考网址:如何使用OpenCV的applyColorMap创建伪彩色
函数cv2.convertScaleAbs
表示将图像以伪彩色的形式显示出来。
OpenCV定义了12个颜色图,可使用applyColorMap函数将其应用于灰度图像以生成伪彩色图像。
说的直白点,可能是为了好看。。。