Как вы заявили ранее, загрузка проста:
img = cv2.imread("a.tif", cv2.IMREAD_ANYCOLOR | cv2.IMREAD_ANYDEPTH)
Тогда у вас есть разные варианты визуализации теплового изображения. Простой наивный подход заключается в нормализации от минимального до максимального значения:
normed = cv2.normalize(img, None, 0, 255, cv2.NORM_MINMAX, dtype=cv2.CV_8U)
После этого вы можете раскрасить его с помощью карты цветов:
color = cv2.applyColorMap(normed, cv2.COLORMAP_JET)
Я бы предложил зафиксировать температурный диапазон и обрезать остальные значения, чтобы получить изображение с цветами, которые можно сравнивать между несколько изображений или видео. Чтобы сделать это, вы можете взять идею из этого ответа , предполагая, что ваши новые min и max равны 0 и 255, а ваши старые min и max - это диапазон, который вам нужен.
Чтобы быть более точным c, в вашем случае вам нужно что-то вроде:
def normalizeImg(low, high, img):
imgClip = np.clip(img, low, high)
maxVal = np.max(imgClip)
minVal = np.min(imgClip)
return np.uint8((255.)/(maxVal-minVal)*(imgClip-maxVal)+255.)
Где низкие и высокие значения - необработанные значения, к которым вы хотите нормализоваться. И тогда вы используете это как:
def celsiusToPixel(val):
return (val + 273.15) / 0.04
rangeToUse = [celsiusToPixel(20), celsiusToPixel(30)] # from 20-30° celsius
normed_range = normalizeImg(rangeToUse[0], rangeToUse[1], img)
Я надеюсь, что ничего не пропустил, но если у вас есть вопросы, просто спросите :)