-
-
Save moveurbody/ca684d05a7d2a078dd82c05b01ffc75d to your computer and use it in GitHub Desktop.
透過Opencv, Python比對A影像是否有出現在B影像之中
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import cv2 | |
import numpy as np | |
from matplotlib import pyplot as plt | |
img = cv2.imread('/Users/yuhsuan/Desktop/matchTemplate_1.jpg',0) | |
img2 = img.copy() | |
template = cv2.imread('/Users/yuhsuan/Desktop/matchTemplate_2.jpg',0) | |
w, h = template.shape[::-1] | |
# 共有六種比對的演算法,已經先將他設定成只有一種 | |
# All the 6 methods for comparison in a list | |
# methods = ['cv2.TM_CCOEFF', 'cv2.TM_CCOEFF_NORMED', 'cv2.TM_CCORR', | |
# 'cv2.TM_CCORR_NORMED', 'cv2.TM_SQDIFF', 'cv2.TM_SQDIFF_NORMED'] | |
methods = ['cv2.TM_CCOEFF'] | |
for meth in methods: | |
img = img2.copy() | |
method = eval(meth) | |
# Apply template Matching | |
res = cv2.matchTemplate(img,template,method) | |
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res) | |
print(min_val, max_val, min_loc, max_loc) | |
# If the method is TM_SQDIFF or TM_SQDIFF_NORMED, take minimum | |
if method in [cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED]: | |
top_left = min_loc | |
else: | |
top_left = max_loc | |
bottom_right = (top_left[0] + w, top_left[1] + h) | |
cv2.rectangle(img,top_left, bottom_right, 0, 2) | |
plt.subplot(121),plt.imshow(res,cmap = 'gray') | |
plt.title('Matching Result'), plt.xticks([]), plt.yticks([]) | |
plt.subplot(122),plt.imshow(img,cmap = 'gray') | |
plt.title('Detected Point'), plt.xticks([]), plt.yticks([]) | |
plt.suptitle(meth) | |
plt.show() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment