質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

0回答

1006閲覧

pythonを用いたテンプレートマッチングの方法

pusher

総合スコア8

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/31 02:35

python

1コード 2import cv2 3import numpy as np 4 5fname_in1 = 'target.png' 6fname_in2 = 'template.png' 7fname_out = 'TemplateMatchingDrawLines.png' 8 9target_img = cv2.imread(fname_in1) 10template_img = cv2.imread(fname_in2) 11target_img = np.float64(cv2.cvtColor(target_img,cv2.COLOR_RGB2GRAY)) #グレースケール化 12template_img = np.float64(cv2.cvtColor(template_img,cv2.COLOR_RGB2GRAY)) #グレースケール化 13 14H,W = target_img.shape 15h,w = target_img.shape 16 17SSD_Min = 99999999999999999 #最小値を探すために値を初期化する 18SSD_x = 0 #最小となるxを格納するための変数 19SSD_y = 0 #最小となるyを格納するための変数 20 21for y in range(0,H-h): 22 for x in range(0,W-w): 23 diff = (target_img[y:y+h,x:x+w] - template_img)**2 24 ssd = diff.sum() #SSDを計算 25 if(SSD_Min>ssd):#SSDの値が最小となるよう更新 26 SSD_Min = ssd 27 SSD_x = x #xを更新 28 SSD_y = y #yを更新 29 30target_img = cv2.imread(fname_in1) 31 32cv2.rectangle(target_img,(SSD_x,SSD_y),(SSD_x+w,SSD_y+h),(255,0,0),1) 33print(SSD_Min,SSD_x,SSD_y) #デバッグ用 34cv2.imwrite(fname_out,target_img) 35```### 前提・実現したいこと 36 37ここに質問の内容を詳しく書いてください。 38pythonを使ったテンプレートマッチングの練習をしています. 39仕組みの理解をしたいと考え,opencvのmatchTemplate()を使わずにSSD(Sum of Square Difference)を計算することでテンプレートマッチングを行おうとしています. 40 41 42### 発生している問題・エラーメッセージ 43上記のコードを実行すると,SSD_Minの値が更新されておらずテンプレートマッチングがうまくいきませんでした. 44実行自体はできているのですが,四角形の描写ができていません

エラーメッセージ

該当のソースコード

ソースコード

試したこと

SSDの計算方法が間違っていないか試すため,同様の計算方法を用いて各画素にSSD値を格納した画像を出力してみましたが,画像はきちんと出力されました.

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問