Python 3.x 将像素值映射到热图像上的温度值
我有一个红外相机的热像(带色条)。我的目标是通过点击任何一点来获得它的温度 我已经编写了一个脚本,通过右键单击它来检索任何像素的RBG值 我认为使用颜色栏的最大和最小温度,我可以将像素值映射到温度值 这是可能的还是有更好的方法 多谢各位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
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的解释。如何匹配图像和条形图中像素的颜色,并使用其在条形图中的位置来近似温度值?为了清晰起见,我在原来的问题上添加了一个新的图像。谢谢,你可以试试看。这是一种不太精确、更迂回的方法。只需将您的像素与颜色栏上的每个像素进行比较,并找到最接近的匹配(欧几里德距离)。这将为您提供沿颜色栏的位置,您可以直接将其转换为值。