сделать тепловую карту в градациях серого из изображения - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь сделать тепловую карту из изображения в градациях серого с помощью cv2. Проблема в том, что я получаю странно выглядящее изображение с таким кодом:

import cv2
import numpy as np

img = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE)

cv2.imshow('img', img)
cv2.waitKey(0)

hist = cv2.calcHist([img], [0], None, [256], [0, 256])
hist2 = np.uint8(hist)

heat = cv2.LUT(img, hist2)

cv2.imshow('img', heat)
cv2.waitKey(0)
cv2.destroyAllWindows()

1 Ответ

0 голосов
/ 29 марта 2020

Не уверен, что вы подразумеваете под тепловой картой, но в matplotlib есть несколько цветовых карт, которые вы можете использовать для получения похожих результатов.

import matplotlib.pyplot as plt
import numpy as np
import cv2

image = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE)
colormap = plt.get_cmap('inferno')
heatmap = (colormap(image) * 2**16).astype(np.uint16)[:,:,:3]
heatmap = cv2.cvtColor(heatmap, cv2.COLOR_RGB2BGR)

cv2.imshow('image', image)
cv2.imshow('heatmap', heatmap)
cv2.waitKey()

Также вы можете использовать cv2.applyColorMap

image = cv2.imread('test.jpg', 0)
heatmap = cv2.applyColorMap(image, cv2.COLORMAP_HOT)

enter image description here

...