我正在尝试使用OpenCV Python编写颜色选择器函数。
在getColor
函数中,我检索鼠标单击的坐标(x,y(并访问与这些坐标对应的输入图像的像素。但是,检索到的颜色似乎不是我单击的像素的颜色。
import cv2
import numpy as np
TrackColor = np.zeros((300,512,3), np.uint8)
cap = cv2.VideoCapture(0)
def getColor(event,x,y,flags,param):
if event==cv2.EVENT_LBUTTONDOWN:
print('x:',x,'y:',y)
d = img[x][y]
b,g,r = d
TrackColor[:] = [b,g,r]
print(d)
cv2.namedWindow('frame')
cv2.setMouseCallback('frame',getColor)
while(1):
ret, img = cap.read()
cv2.imshow('Color',TrackColor)
cv2.imshow('frame',img)
if cv2.waitKey(20) & 0xFF == 27:
break
cv2.destroyAllWindows()
您没有正确访问img
矩阵。
矩阵的访问方式如下:img[row][col]
在代码中,x
是列的索引,y
行的索引,因此,请将您的代码更改为:img[y][x]
这确实是一个简单的问题(你可以自己想(。请下次在发布问题之前尝试在互联网上搜索更长的时间。