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

时间:2017-05-15 10:47:20

标签: python-3.x opencv

我尝试使用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()

1 个答案:

答案 0 :(得分:0)

您没有正确访问img矩阵。

可以像这样访问矩阵:img[row][col]

在您的代码x中是的索引和y 的索引, 所以请将您的代码更改为:img[y][x]

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