【问题标题】:Superimpose heatmap on a base image OpenCV Python在基础图像 OpenCV Python 上叠加热图
【发布时间】:2022-05-19 05:10:25
【问题描述】:

请看这个github page。我想使用 Python PIL、open cv 或 matplotlib 库以这种方式生成热图。有人可以帮我弄清楚吗?

我可以为我的网络创建一个与输入大小相同的热图,但我无法叠加它们。热图形状为 (800,800),基础图像形状为 (800,800,3)

【问题讨论】:

  • 你有什么解决办法吗?我确实有同样的要求

标签: opencv image-processing python-imaging-library heatmap


【解决方案1】:

更新答案 -- 2022 年 4 月 29 日。

在多次 cmet 之后,我决定用更好的可视化来更新这篇文章。

考虑下图:

img = cv2.imread('image_path')

对LAB转换图像的a通道进行二值化阈值后得到二值化图像:

lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
a_component = lab[:,:,1]
th = cv2.threshold(a_component,140,255,cv2.THRESH_BINARY)[1]

应用高斯模糊:

blur = cv2.GaussianBlur(th,(13,13), 11)

生成的热图:

heatmap_img = cv2.applyColorMap(blur, cv2.COLORMAP_JET)

最后,将热图叠加在原始图像上:

super_imposed_img = cv2.addWeighted(heatmap_img, 0.5, img, 0.5, 0)

注意:您可以在函数cv2.addWeighted中改变权重参数并观察差异。

【讨论】:

  • 我的意思是第二张图片。请更正! heat_img 和 fin 看起来一样。
  • 你的整体方法是正确的。但是第二张和第三张图片看起来一样,就是这样!换秒的图片。
  • 第二张图片是热图。因为您希望它与原始图像叠加,所以我使用cv2.addweighted() 函数来做同样的事情。您可以根据需要使用它,或者停止使用第二张图片本身。
  • 答案效果很好。但是,创建图像的直接热图并将其覆盖在图像上是很奇怪的。我认为这让@curio1729 感到困惑。通常,覆盖的热图​​是对图像进行的估计/预测/其他操作的结果。
【解决方案2】:

我的代码从一个名为 cam 的热图矩阵 (224,224) 开始,它通过 opencv 应用于名为 frame 的原始图像;

而且它似乎工作得很好:

import numpy as np
from cv2 import cv2
from skimage import exposure 
...

capture = cv2.VideoCapture(...)
while True:
    ret, frame = capture.read()

    if ret:
        #resize original frame
        frame = cv2.resize(frame, (224, 224)) 

        #get color map
        cam = getMap(frame)
        map_img = exposure.rescale_intensity(cam, out_range=(0, 255))
        map_img = np.uint8(map_img)
        heatmap_img = cv2.applyColorMap(map_img, cv2.COLORMAP_JET)

        #merge map and frame
        fin = cv2.addWeighted(heatmap_img, 0.5, frame, 0.5, 0)

        #show result
        cv2.imshow('frame', fin)

getMap() 函数获取给定帧的头图;

我发现了一些关于这个主题的有趣的免费视频:

https://www.youtube.com/watch?v=vTY58-51XZA&t=14s

https://www.youtube.com/watch?v=4v9usdvGU50&t=208s

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 2012-07-20
    • 2019-01-16
    • 2018-02-22
    • 2013-08-13
    相关资源
    最近更新 更多