Veuillez regarder ceci page github . Je veux générer des cartes de chaleur de cette manière en utilisant Python PIL, ouvrez la bibliothèque cv ou matplotlib. Quelqu'un peut-il m'aider à le comprendre?
Je pourrais créer une carte thermique pour mon réseau à la même taille que l'entrée, mais je ne suis pas en mesure de les superposer. La forme de la carte thermique est (800 800) et la forme de l'image de base est (800 800,3)
Vous pouvez superposer votre heatmap sur l'image en utilisant la fonction cv2.addweighted()
disponible dans OpenCV.
Voici un exemple
img = cv2.imread('Sample.jpg', 1)
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
heatmap_img = cv2.applyColorMap(gray_img, cv2.COLORMAP_JET)
Maintenant, si vous souhaitez superposer cela au-dessus de l'image d'origine, vous pouvez utiliser la fonction cv2.addweighted()
fin = cv2.addWeighted(heatmap_img, 0.7, img, 0.3, 0)
Vous pouvez faire varier les paramètres de poids dans la fonction pour les deux images.
Mon code commence à partir d'une matrice de carte thermique (224,224) appelée cam, qui est appliquée à l'image originale appelée frame, via opencv;
et cela semble plutôt bien fonctionner:
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)
la fonction getMap () obtient le headmap étant donné le cadre;
J'ai trouvé des vidéos gratuites intéressantes sur ce sujet: