Если это для визуализации, вам нужно будет сделать большее разделение между числами. У вас есть в основном 3 числа, и когда вы масштабируете их (умножьте 255), они станут в основном 2 числами (254 и 255). Когда он применяет цвет, оба числа почти одинаковы, и очень трудно понять, какой из них какой ...
Решение:
Создать новую шкалу с текущими числами. Вы можете легко сделать это с помощью cv2.normalize
import matplotlib.pyplot as plt
import numpy as np
import cv2
heatmap = np.array([
[0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705],
[0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705],
[0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705],
[0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705],
[0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99919313,0.99782705,0.99782705],
[0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,1.00000000,0.99782705,0.99782705],
[0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705],
[0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705],
[0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705,0.99782705]
])
heatmap = cv2.resize(heatmap, (400,300))
plt.matshow(heatmap)
plt.show()
heatmapshow = None
heatmapshow = cv2.normalize(heatmap, heatmapshow, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
heatmapshow = cv2.applyColorMap(heatmapshow, cv2.COLORMAP_JET)
cv2.imshow("Heatmap", heatmapshow)
cv2.waitKey(0)
и вы получите:
Примечание: я просто поместил числа в изменение размера, так как у меня нет образца изображения.
Однако здесь есть одна вещь, на которую следует обратить внимание. При таком решении наибольшее число будет красным, независимо от того, насколько оно маленькое. Если вам нужно новое фиксированное масштабирование (например, 1. оно красного цвета, а 0 - самое маленькое число), вам нужно сделать это вручную, например:
newvalue= (maxNew-minNew)/(max-min)*(value-max)+maxNew
, где maxNew= 255
и minNew=0
, а также max и min - это то, что вы произвольно решите (например, 0.9978 и 1.0)