• 締切済み

OpenCVの色についての質問です。

OpenCVの色についての質問です。 現在色の認識のプログラムについて検証しているのですが、 OpenCVを用いたvisualC++のプログラムはどのようにして、 認識する色を指定しているのでしょうか? bool is_yellow(CvScalar s){ return (s.val[0]<150&&s.val[1]>200&&s.val[2]>200);//BGR } 私はこの部分の値を変更すればできると考えたのですがうまくいきませんでした。 ソースを載せたいのですが、全部は載せることができません。 なので回答いただいた方に指定していただければその部分を補足として載せたいと思います。 何卒よろしくお願いします。

みんなの回答

回答No.1

OpenCVを使っているのなら、cvCvtColor関数を使って、この関数の3番目の引数にCV_BGR2HSVを指定することで、BGRからHSV(色相、彩度、明度)に変換してから、しきい値処理をすると良いと思います。 黄色の場合、色相は60°前後になりますが、本来色相の範囲は0~360°なのですが、cvCvtColor関数で処理後のIplImageに8bit3chのデータを指定すると0~180°の範囲に割り振られるので、黄色の範囲は色相の値(s.val[0])の値が30付近になると思います。 ただし、これだけだと白と区別できないので、彩度の値(s.val[1])にもある程度、制限を付けないと、黄色っぽい色を認識できないと思います。(s.val[1]が255のとき、まっ黄色、0のとき、白やグレーとなります。) 他にも色の識別方法はありますが、興味があればHSV,HLS,Lab,XYZなど調べてみて下さい。

関連するQ&A