2016-12-06 10 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