Opencv 如何在基础图像上叠加热图?

Opencv 如何在基础图像上叠加热图?,opencv,python-imaging-library,heatmap,Opencv,Python Imaging Library,Heatmap,请看这个。我想用pythonpil、opencv或matplotlib库以这种方式生成热图。有人能帮我弄清楚吗 我可以为我的网络创建一个与输入大小相同的热图,但我无法叠加它们。热图形状为(800800),基本图像形状为(800800,3)您可以使用OpenCV中提供的函数cv2.addweighted()将热图叠加到图像上 这里有一个例子 示例图像: 热图: 叠加: 现在,如果要将其叠加在原始图像上,可以使用cv2.addweighted()函数 fin = cv2.addWeighted(

请看这个。我想用pythonpil、opencv或matplotlib库以这种方式生成热图。有人能帮我弄清楚吗


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

您可以使用OpenCV中提供的函数
cv2.addweighted()
将热图叠加到图像上

这里有一个例子

示例图像:

热图:

叠加: 现在,如果要将其叠加在原始图像上,可以使用
cv2.addweighted()
函数

fin = cv2.addWeighted(heatmap_img, 0.7, img, 0.3, 0)


您可以在函数中更改两幅图像的权重参数。

我的代码从名为cam的热图矩阵(224224)开始,该矩阵通过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)
函数的作用是:获取给定帧的人头图

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


是的。你为什么怀疑它?你可以自己在灰度图像上试试,我是说第二张图像。请改正它!加热的img和鳍看起来是一样的。你的整体方法是正确的。但是第二张和第三张图片看起来是一样的,就是这样!更改second的图片。第二个图像是热图。因为您希望它与原始图像重叠,所以我使用
cv2.addweighted()
函数执行相同的操作。你可以使用它,如果你想或者停止与第二个图像本身。让我们。
fin = cv2.addWeighted(heatmap_img, 0.7, img, 0.3, 0)
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)