• 締切済み

色領域の検出

opencvのプログラムを用いてある色の位置情報を検出したいのですが、 何を用いていいか分かりません。 マスクを用いてある色の領域だけを取り出す参考のプログラムは見つけたのですが、それではあとで全体の画像の処理ができないので困っています。

みんなの回答

  • fonera
  • ベストアンサー率52% (38/72)
回答No.1

恐れ入ります。 OpenCVであれば、ピクセル毎に情報が取れます。それをお使いになられてはいかがでしょうか? (IplImageメンバのimageData配列にデータが入っています) 例えば、以下のようなソースで可能かと思います。 IplImage *img; uchar b,g,r; int x, y; img = cvLoadImage ("test.jpg", CV_LOAD_IMAGE_COLOR); for (y = 0; y < img->height; y++) { for (x = 0; x < img->width; x++) { b = img->imageData[img->widthStep * y + x * 3]; g = img->imageData[img->widthStep * y + x * 3 + 1]; r = img->imageData[img->widthStep * y + x * 3 + 2]; // ここでBGRに対して処理をしてやる // 例えばif (b == hoge && g == hoga && r == hogu) など } } ただし低速ですし、ここまで直接的な手法が必要かどうかわかりません。 どんなことに使いたいかによって最適な手法が異なります。 どういった画像処理をしたいか追加で質問すれば、他の方も答えやすいかと思います。ご参考になれば幸いです。

関連するQ&A