python
Opencv
初心者です。よろしく御願いします。
pythonでテンプレートマッチングを行いたいのです
python
1import cv2,matplotlib 2import numpy as np 3import matplotlib.pyplot as plt 4 5img = cv2.imread('(写真1)',0) #after 6template = cv2.imread('(写真2)',0) #before 7 8def draw_window(x, y, dy): 9 templates_roi = [template[y:y+50, x:x+50],template[y+dy:y+dy+50,x:x+50]] 10 for r in templates_roi: 11 img_copy = img.copy() 12 template_roi = eval(r) 13 result = cv2.matchTemplate(img_copy, template_roi, cv2.TM_CCORR_NORMED) 14 minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(result) 15 print("max value: {}, max Location: {}".format(maxVal, maxLoc)) 16 fig, ax = plt.subplots(facecolor="w") 17 ax.add_patch(plt.Rectangle(maxLoc, 50, 50, ec="r", lw=1, fc="none")) 18 ax.imshow(cv2.cvtColor(img_copy, cv2.COLOR_BGR2RGB)) 19 plt.show()
テンプレート画像からROI抽出を行い、抽出したtemplate_roiとimg_copyでテンプレートマッチングを行いたいです。
ROI抽出は2回行いたいのでfor文でループさせているのですが次のようなエラーが検出します。
python
1>>> from ... import* 2>>> draw_window(460,280,400) 3Traceback (most recent call last): 4 File "<stdin>", line 1, in <module> 5template_roi = eval(r) 6TypeError: eval() arg 1 must be a string, bytes or code object
繰り返ししたいのが、計算手法などでなく、画像だからエラーが出るのでしょうか
エラーの解決方法をどなたか教えてください。