Я пытаюсь получить значения пикселей из ИК-изображения с помощью движения мыши и хочу преобразовать его в температуру.Но я получаю следующую ошибку: IndexError: индекс 598 выходит за пределы для оси 0 размером 480
Любые советы о том, как это исправить, будут высоко оценены!
Я пробовалследующим образом.Он показывает значения пикселей для определенных осей x и y, но иногда пересекает пределы.
import cv2
import numpy as np
import colour
import pytemperature
from PIL import Image
def mouse_drawing(event, x, y, flags, params):
w = params[1]
h = params[0]
if event == cv2.EVENT_LBUTTONDOWN:
print("Left Click")
print(w,h)
elif event == cv2.EVENT_MOUSEMOVE:
if x<=w and y<=h:
print("Coordinates of the pixel: X: ",x,"Y: ",y)
# Assuming sRGB encoded colour values.
RGB = img[x,y]
# Conversion to tristimulus values.
XYZ = colour.sRGB_to_XYZ(RGB / 255)
# Conversion to chromaticity coordinates.
xy = colour.XYZ_to_xy(XYZ)
# Conversion to correlated colour temperature in K.
CCT = colour.xy_to_CCT(xy, 'hernandez1999')
print('TEMP: ',pytemperature.k2c(CCT))
img_file = 'examples/ax8.jpg'
img1 = cv2.imread(img_file, cv2.IMREAD_COLOR)
img = np.array(img1)
p,q,z = img.shape
params = [p,q]
cv2.namedWindow('image')
cv2.setMouseCallback('image',mouse_drawing,params)
while True:
cv2.imshow('image',img)
if cv2.waitKey(20) & 0xFF == 27:
break
cv2.destroyAllWindows()
В пределах диапазона формат вывода: Координаты пикселя: X: 175 Y: 51 TEMP: 11958.9911017