赞
踩
博客背景
图像分割、检测通常会生成单通道的二值图或者灰度图像(mask),为了直观展示分割检测效果,通常最直接的方法就是将生成的mask基于一定透明度叠加到原始图像。从而进行观察分割效果以及后续分割阈值的选取。
实现过程
将灰度图像标准化
gray_img = segmentation&detection_method() # 从分割检测算法得到灰度图
norm_img = np.zeros(gray_img.shape)
cv2.normalize(gray_img , norm_img, 0, 255, cv2.NORM_MINMAX)
norm_img = np.asarray(norm_img, dtype=np.uint8)
单通道灰度图像转为三通道热力图像
热力图模式选取参考 https://blog.csdn.net/jningwei/article/details/78803669
heat_img = cv2.applyColorMap(norm_img, cv2.COLORMAP_JET) # 注意此处的三通道热力图是cv2专有的GBR排列
heat_img = cv2.cvtColor(heat_img, cv2.COLOR_BGR2RGB)# 将BGR图像转为RGB图像
叠加到原始图像
注意事项1:org_img 和 heat_img 像素值分布区间必须统一,比如此处都为(0,255)
注意事项2:下面函数中两个权重值最好相加为1,这样可以保证叠加图像像素值不会超过255
img_add = cv2.addWeighted(org_img, 0.3, heat_img, 0.7, 0)
# 五个参数分别为 图像1 图像1透明度(权重) 图像2 图像2透明度(权重) 叠加后图像亮度
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。