颜色选择器 - 找不到正确的颜色值 OpenCV3 Python3



我正在尝试使用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]


这确实是一个简单的问题(你可以自己想(。请下次在发布问题之前尝试在互联网上搜索更长的时间。

最新更新