3

ライブ ビデオ ストリームから特定の色、たとえば青を検出したいと考えています。ライブ ビデオ ストリームを表示し、HSV とグレースケールに変更する次のコードを作成しました。私はopencvにまったく慣れていないので、次に何をすべきかわかりません。

誰かが特定の色を検出するためのコードを完成させることができますか?

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

using namespace cv;


int main(){
Mat image;
Mat gray;
Mat hsv;
VideoCapture cap;
cap.open(0);
namedWindow("window", CV_WINDOW_AUTOSIZE);
namedWindow("gray", CV_WINDOW_AUTOSIZE);
namedWindow("hsv", CV_WINDOW_AUTOSIZE);

while (1){
    cap >> image;
    cvtColor(image, gray, CV_BGR2GRAY);
    cvtColor(image, hsv, CV_BGR2HSV);
    imshow("window", image);
    imshow("gray", gray);
    imshow("hsv", hsv);
    waitKey(33);
}
return 0;
}
4

1 に答える 1

10

これは、次の 3 つの手順で行うことができます。

  1. フレームをロードします。
  2. BGR を HSV 色空間に変換します。
  3. 検出する色範囲の範囲内。

編集

このコードを使用して、ソース画像から任意のピクセルの HSV 値を見つけることができます。ここでHSV 色空間に関する適切な説明を参照できます。そこから HSV カラー ホイールをダウンロードし、手動で HSV 範囲を確認してください。

コメントで提供される画像には、次の範囲を使用できます。

hsv_min--> (106,60,90)
hsv_max-->(124,255,255)

次のコードを使用できます。

Mat src=imread("image.jpg");
Mat HSV;
Mat threshold;

cvtColor(src,HSV,CV_BGR2HSV);
inRange(HSV,Scalar(106,60,90),Scalar(124,255,255),threshold);
imshow("thr",threshold);     

これは出力です:

ここに画像の説明を入力

于 2013-10-05T05:05:22.343 に答える