2016-06-28 11 views
1
私は、次のコードを実行しよう

OpenCVのINRANGE()関数

#include<opencv\cv.h> 
#include<opencv\highgui.h> 

using namespace cv; 


int main() { 

    VideoCapture cap; 
    cap.open(0); 


    while (1) { 

Mat src; 
Mat threshold; 

cap.read(src); 

inRange(src, Scalar(0, 0, 0), Scalar(255, 0, 0), threshold); 
imshow("thr", threshold); 
imshow("hsv", src); 

     waitKey(33); 
    } 
    return 0; 
} 

は、しかし、私は、コードを実行したときに表示されるだけで、空白のウィンドウがあるので、それはフィルタリングしないように思えます。

どのように赤い色を検出するコードを取得するには?

+0

あなたのソースイメージを正しく見ることができますか?黒い窓? –

+0

返信いただきありがとうございます。ソース画像が正しく表示されています。 – Danaro

+0

あなたは 'src'画像をhsvに変換するのを忘れました; D OpenCVでは、RGBではなくBGRを使用していますので、青のチャンネルを閾値処理しています。したがって、BGRでのしきい値は、 'inRange(src、Scalar(0、0、0)、Scalar(50,50,255)、threshold);' HSVカラースペースの使用をお勧めします。 – Miki

答えて

0

あなたはこのようinRange機能を変更する必要があります。

inRange(src, Scalar(0, 0, 0), Scalar(255, 255, 255), threshold); 

あなたがしきい値にちょうど最初のチャネル(青チャンネル)をしようとすると、あなたが他のチャンネルの自由を行う必要があり、そうで0に設定lawerbおよびそのdtype、通常255np.uint8

inRange(src, Scalar(0, 50, 0), Scalar(255, 100, 255), threshold); 

この行は2番目のチャネル(緑のチャネル)を比較し、他のチャネルは無視します。

関連する問題