OpenCVでテンプレートマッチングをするときに
cvMatchTemplate (src_img, tmp_img, dst_img, CV_TM_CCOEFF_NORMED);
cvMinMaxLoc (dst_img, &min_val, &max_val, &min_loc, &max_loc, NULL);
としてプログラムを書いているのですが,cvMinMaxLoc では一番マッチした箇所か,マッチしなかった場所の座標しか取得することができません.
何かスマートに第2候補とか調べれる関数などご存知の方がいましたら,教えていただけないでしょうか?
よろしくお願いいたします.
compareHistを使ってはどうでしょうか。
例えば相関であれば、-1~1を返し、1に近いほど類似しているという判断です。
比較手法については以下のサイトに詳しく書いてあります。
http://d.hatena.ne.jp/ninoseki/20090208
以下にCの場合とC++の場合のサンプルがあります。
このようにヒストグラムの比較をループすることで、
N番目にマッチした箇所は求められると思います。
コメント(0件)