前提・実現したいこと
テンプレートマッチングをopenCVで行っています。
minMaxLocによって類似度の最小と最大の位置を表示しているのですが、
類似度が最大から5つほど(1.最大類似度 2.2番目の類似度 3.3番目の類似度 ...)候補を作って
位置を表示するテンプレートマッチングのコードを作りたく、教えていただきたいです。
よろしくお願いします。
該当のソース
#-*- coding:utf-8 -*- import cv2 import numpy as np def main(): # 入力画像とテンプレート画像をで取得 img = cv2.imread("入力画像") temp = cv2.imread("テンプレート画像") # グレースケール変換 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) temp = cv2.cvtColor(temp, cv2.COLOR_RGB2GRAY) # テンプレート画像の高さ・幅 h, w = temp.shape # テンプレートマッチング match = cv2.matchTemplate(gray, temp, cv2.TM_CCOEFF_NORMED) min_value, max_value, min_pt, max_pt = cv2.minMaxLoc(match) pt = max_pt print(min_value, max_value, min_pt, max_pt) # テンプレートマッチングの結果を出力 cv2.rectangle(img, (pt[0], pt[1] ), (pt[0] + w, pt[1] + h), (0,0,200), 3) cv2.imwrite("出力画像", img) if __name__ == "__main__": main()
補足情報(FW/ツールのバージョンなど)
上のコードでは、最小と最大しか出力できないため、最大の上から5つほど類似度が高いのを出力したいです。
回答1件
あなたの回答
tips
プレビュー