こんにちは


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候補とか調べれる関数などご存知の方がいましたら,教えていただけないでしょうか?

よろしくお願いいたします.

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/08/12 19:20:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:meeker-bot No.1

回答回数16ベストアンサー獲得回数6

ポイント60pt

compareHistを使ってはどうでしょうか。

例えば相関であれば、-1~1を返し、1に近いほど類似しているという判断です。

比較手法については以下のサイトに詳しく書いてあります。

http://d.hatena.ne.jp/ninoseki/20090208

以下にCの場合とC++の場合のサンプルがあります。

このようにヒストグラムの比較をループすることで、

N番目にマッチした箇所は求められると思います。

http://opencv.jp/opencv2-x-samples/backprojectionpatch

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません