请查看此github page。我想使用Python PIL,open cv或matplotlib库以这种方式生成热图。有人可以帮我搞清楚吗?
我可以为我的网络创建一个与输入相同大小的热图,但我无法叠加它们。热图形状为(800,800),基本图像形状为(800,800,3)
答案 0 :(得分:6)
您可以使用OpenCV中提供的函数cv2.addweighted()
在图像上叠加热图。
这是一个例子
img = cv2.imread('Sample.jpg', 1)
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
heatmap_img = cv2.applyColorMap(gray_img, cv2.COLORMAP_JET)
现在,如果您想将其叠加在原始图像的顶部,可以使用cv2.addweighted()
功能
fin = cv2.addWeighted(heatmap_img, 0.7, img, 0.3, 0)
您可以更改两个图像的功能中的重量参数。
答案 1 :(得分:0)
我的代码从称为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()函数获取给定框架的头部地图;
我找到了一些有趣的有关该主题的免费视频: