python opencv 灰度图转热力图 叠加到原始图

  • 20190701

  1. 博客背景

    图像分割、检测通常会生成单通道的二值图或者灰度图像(mask),为了直观展示分割检测效果,通常最直接的方法就是将生成的mask基于一定透明度叠加到原始图像。从而进行观察分割效果以及后续分割阈值的选取。

  2. 实现过程

    1. 将灰度图像标准化

      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)
      
    2. 单通道灰度图像转为三通道热力图像

      热力图模式选取参考 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图像
      
    3. 叠加到原始图像

      注意事项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透明度(权重) 叠加后图像亮度
      

你可能感兴趣的:(随记,python,opencv,热力图)