![]() |
OpenCV 5.0.0
Open Source Computer Vision
|
テンプレートマッチングは、より大きな画像の中でテンプレート画像の位置を探索して見つけるための手法である。OpenCV にはこの目的のための関数 cv.matchTemplate() が用意されている。この関数はテンプレート画像を入力画像上で(2次元の畳み込みと同様に)スライドさせ、テンプレート画像と、その下にある入力画像のパッチとを比較する。OpenCV にはいくつかの比較手法が実装されている(詳細はドキュメントを参照)。戻り値はグレースケール画像であり、各ピクセルはそのピクセルの近傍がテンプレートとどれだけマッチするかを表す。
入力画像のサイズが (WxH)、テンプレート画像のサイズが (wxh) であれば、出力画像のサイズは (W-w+1, H-h+1) となる。結果が得られたら、cv.minMaxLoc() 関数を使って最大値・最小値の位置を見つけられる。その位置を矩形の左上隅とし、(w,h) を矩形の幅と高さとする。その矩形がテンプレートの領域となる。
次の関数を使用する: cv.matchTemplate (image, templ, result, method, mask = new cv.Mat())
| image | 探索を実行する画像。8ビットまたは32ビット浮動小数点である必要がある。 |
| templ | 探索するテンプレート。元画像より大きくてはならず、同じデータ型である必要がある。 |
| result | 比較結果のマップ。シングルチャンネルの32ビット浮動小数点である必要がある。 |
| method | 比較手法を指定する引数(cv.TemplateMatchModes を参照)。 |
| mask | 探索するテンプレートのマスク。templ と同じデータ型・同じサイズである必要がある。デフォルトでは設定されない。 |