2016-12-06 180 views
0

我正在使用Raspberry Pi 3和Pi相機。我正在做一個圖像處理程序,可以檢測到黃色,現在我正在測試它,但在框架中什麼也沒有發生。我的顏色檢測是錯誤的? 這裏是我的代碼:Python中的RGB顏色檢測語言

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() 

回答

0

的問題是,你篩選的看上去是RGB值的HSV圖像。如果你在尋找黃色,那麼你想要一個窄的色調範圍,然後飽和度和價值更廣。

黃色對於色調大致爲60度,這意味着OpenCV的值大約爲30(因爲色相值是可以在0-255範圍內適合的度數值的一半)。同樣,你的飽和度和值不應該是0-255的全部範圍,否則接近黑色或白色的東西將匹配。

試着這麼做

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

希望這將讓你關閉,但你可能還是要玩的數字來得到你想要的。

+0

它的工作原理。謝謝。我怎樣才能決定這個數字? – user

+0

這實際上主要是試驗和錯誤,取決於你想要做什麼。你可以看看HSV滑塊(如http://colorizer.org/)來指出你正確的方向。 – Iluvatar