Python 3.x 将像素值映射到热图像上的温度值

Python 3.x 将像素值映射到热图像上的温度值,python-3.x,image-processing,heatmap,Python 3.x,Image Processing,Heatmap,我有一个红外相机的热像(带色条)。我的目标是通过点击任何一点来获得它的温度 我已经编写了一个脚本,通过右键单击它来检索任何像素的RBG值 我认为使用颜色栏的最大和最小温度,我可以将像素值映射到温度值 这是可能的还是有更好的方法 多谢各位 from PIL import Image import cv2 from win32api import GetSystemMetrics counter = 0 max_value = input('Max Temp Value: ') min_valu

我有一个红外相机的热像(带色条)。我的目标是通过点击任何一点来获得它的温度

我已经编写了一个脚本,通过右键单击它来检索任何像素的RBG值

我认为使用颜色栏的最大和最小温度,我可以将像素值映射到温度值

这是可能的还是有更好的方法

多谢各位

from PIL import Image
import cv2
from win32api import GetSystemMetrics

counter = 0
max_value = input('Max Temp Value: ')
min_value = input('Min Temp Value: ')

def mouse_callback(event, x, y, flags, params): # Tracks the pixel the mouse it hovering on. When right click it prints the pixel location and its RBG values.                                     
    global counter
    if event == 2:
        counter += 1
        r, g, b = rgb_img.getpixel((x, y))
        print(f'{counter}: {[x, y]} value {r} {g} {b}')
    else:
        print([x, y], end='\t\r', flush=True)

path_image = 'colors.jpg'
img = cv2.imread(path_image)
im = Image.open(path_image)
rgb_img = im.convert('RGB')

width = GetSystemMetrics(0)
height = GetSystemMetrics(1)

scale_width = width / im.size[0]
scale_height = height / im.size[1]
scale = min(scale_width, scale_height)
window_width = int((im.size[0] * scale) * 0.5)
window_height = int((im.size[1] * scale) * 0.5)

cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.resizeWindow('image', window_width, window_height)

cv2.setMouseCallback('image', mouse_callback)

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


显示的颜色是伪彩色。相机每像素测量一个值,在显示器中使用颜色贴图。您应该检索来自传感器的原始值,而不是屏幕上显示的颜色映射值。感谢@CrisLuengo的解释。如何匹配图像和条形图中像素的颜色,并使用其在条形图中的位置来近似温度值?为了清晰起见,我在原来的问题上添加了一个新的图像。谢谢,你可以试试看。这是一种不太精确、更迂回的方法。只需将您的像素与颜色栏上的每个像素进行比较,并找到最接近的匹配(欧几里德距离)。这将为您提供沿颜色栏的位置,您可以直接将其转换为值。