実際のところ
import cv2 as cv import numpy as np from matplotlib import pyplot as plt import sys def function(pattern_file, threshold_val,): img_rgb = cv.imread('sampleimg.png') img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY) template = cv.imread(pattern_file,0) w, h = template.shape[::-1] res = cv.matchTemplate(img_gray,template,cv.TM_CCOEFF_NORMED) threshold = threshold_val loc = np.where( res >= threshold) for pt in zip(*loc[::-1]): cv.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 1) cv.imwrite('res.png',img_rgb) if __name__ == '__main__': args = sys.argv function(args[1], float(args[2]))
$ python sample_pattern.py good.png 0.3
使った結果
パターンファイルのgoodをつかってみます。
程よいパラメータを設定しないと、使いモンにならなくなるので注意。
goodの0.8
goodの0.6
goodの0.3
badの0.9
badの0.8
badの0.6
こころなしか線が太くなったような??