Python语言中的RGB颜色检测

时间:2016-12-06 11:03:44

标签: python

我正在使用Raspberry Pi 3和Pi相机。我正在做一个可以检测黄色的图像处理程序,现在我正在测试它,但在帧中没有任何事情发生。我的颜色检测是错误的? 这是我的代码:

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

while(1):

    # Take each frame
    _, frame = cap.read()

    # Convert BGR to HSV
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    # define range of yellow color in HSV
    lower_yellow = np.array([204,204,0])
    upper_yellow = np.array([255,255,254])

    # Threshold the HSV image to get only yellow colors
    mask = cv2.inRange(hsv, lower_yellow, upper_yellow)

    # Bitwise-AND mask and original image
    res = cv2.bitwise_and(frame,frame, mask= mask)

    cv2.imshow('frame',frame)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    k = cv2.waitKey(5) & 0xFF
    if k == 27:
        break

cv2.destroyAllWindows()

1 个答案:

答案 0 :(得分:0)

问题在于您使用看起来像RGB值的HSV图像进行过滤。如果你正在寻找黄色,那么你想要一个窄的色调范围,然后饱和度和更宽的值。

黄色大约为60度的色调,这意味着OpenCV的值大约为30(因为色调值是它可以适应0-255范围内的度数值的一半)。同样,您的饱和度和值不应该是0-255的整个范围,否则接近黑色或白色的东西将匹配。

尝试类似

的内容
lower_yellow = np.array([20, 30, 30])
upper_yellow = np.array([40, 200, 300])

这有望让你接近,但你仍然可能需要玩这些数字才能得到你想要的东西。