web-dev-qa-db-fra.com

comment superposer une heatmap sur une image de base?

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? Superimposed heatmaps

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)

10
curio1729

Vous pouvez superposer votre heatmap sur l'image en utilisant la fonction cv2.addweighted() disponible dans OpenCV.

Voici un exemple

Exemple d'image:

img = cv2.imread('Sample.jpg', 1)
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

enter image description here

Carte de chaleur:

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

enter image description here

Superposé:

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)

enter image description here

Vous pouvez faire varier les paramètres de poids dans la fonction pour les deux images.

8
Jeru Luke

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:

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

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

0