アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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) など

}
}

ただし低速ですし、ここまで直接的な手法が必要かどうかわかりません。
どんなことに使いたいかによって最適な手法が異なります。
どういった画像処理をしたいか追加で質問すれば、他の方も答えやすいかと思います。ご参考になれば幸いです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!