У меня есть изображение с размером 612x408
(widthxheight).
Когда я открываю его с помощью opencv cv2.imread(/path/to/img)
, оно показывает мне (408,612,3)
.
Это не проблема
Когда я cv2.imshow()
показывает правильное изображение с шириной, превышающей высоту, как нормальный горизонтальный прямоугольник
Я добавил mouseCallback
, чтобы получить положение пикселя, поэтому, когда я помещаю свою мышь ближе кПравый край изображения Я получаю ошибку IndexError: index 560 is out of bounds for axis 0 with size 408
, хотя я нажал на изображение.
Я искал на SO, но не смог найти похожий вопрос
import cv2
def capture_pos(event,x,y,flags,param):
if event == cv2.EVENT_LBUTTONDOWN:
mouseX = x
mouseY = y
print('mouse clicked at x={},y={}'.format(mouseX,mouseY))
h,s,v = img[mouseX,mouseY]
print('h:{} s:{} v:{}'.format(h,s,v))
img = cv2.imread('./messi color.png')
img = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
cv2.namedWindow('get pixel color by clicking on image')
cv2.setMouseCallback('get pixel color by clicking on image',capture_pos)
cv2.imshow('get pixel color by clicking on image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()