こんにちは


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回まで
  • 13歳以上
  • 登録:2010/08/05 19:19:44
  • 終了:2010/08/12 19:20:02

回答(1件)

id:meeker-bot No.1

ゆう回答回数16ベストアンサー獲得回数62010/08/06 12:27:24

ポイント60pt

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

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

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

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

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

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

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

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

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません