• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:opencvのテンプレートマッチングについて)

opencvのテンプレートマッチングについて

このQ&Aのポイント
  • webカメラを使用し、動画像中の手形をリアルタイムで検出し、指文字を判別するプログラムを作成しています。
  • 手の部分を抽出し、handImageという画像として生成しました。
  • handImageとテンプレート画像を比較するために、テンプレートマッチングを使用したいのですが、うまくいきません。

質問者が選んだベストアンサー

  • ベストアンサー
noname#208507
noname#208507
回答No.1

・エラーメッセージについて エラーメッセージから察するに,手の画像とテンプレート画像のデータ型(あるいは色成分数など)が一致していないというエラーではないでしょうか. たとえば cvMatchTemplate() のマニュアルの和訳を見ると,入力画像は「8ビットか32ビット浮動小数点型でなければならない.」ようです.実際に使われたOpenCVの関数がどれか,「色々試した」が何を試したのか不明ですが,色深度などの条件が正しいかは確認済みでしょうか? ・輝度値の比較について value1 == value2; //それぞれ輝度値を照らし合わせていく value ++; 上の比較方法は,濃淡のある(つなり二値でない)画像では無謀です.ほんのわずかな照明条件の変化で輝度が変わってしまうので,対応が正しい場合でも滅多に輝度がイコールにはなりません.テンプレートマッチングなら少なくともSADかSSD,あるいはZNCCを使った方がよいでしょう. たとえば SAD なら下のようなコードになるでしょう.(valueが大きくなるほど,テンプレートとの類似性が低い) value += abs(value1 - value2);

参考URL:
http://imagingsolution.blog107.fc2.com/blog-entry-186.html
bakibaki41
質問者

お礼

回答ありがとうございます。 二値画像にしてから読み込んでます。 cvMatchTemplate()は使用せずに、入力画像とテンプレート画像の画素値が最も一致しているものを表示することはできたのですが、認識率が低いです。。。 さらに認識率を上げる方法など、提案があれば是非教えてください。

すると、全ての回答が全文表示されます。

関連するQ&A