我尝试使用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()
答案 0 :(得分:0)
您没有正确访问img
矩阵。
可以像这样访问矩阵:img[row][col]
在您的代码x
中是列的索引和y
行的索引,
所以请将您的代码更改为:img[y][x]
这确实是一个简单的问题(你可以自己想象)。请在下次尝试在发布问题之前在互联网上搜索一段时间。