#!/bin/python3 import cv2 as cv import numpy as np from matplotlib import pyplot as plt from matplotlib import use, backends use('GTK3Cairo') if __name__ == '__main__': img = cv.imread('cards_orig.jpg') img = cv.cvtColor(img, cv.COLOR_BGR2GRAY) _, img = cv.threshold(img, 50, 255, cv.THRESH_BINARY) img2 = img.copy() #template = cv.imread('data2/icons/m19.png', 0) template = cv.imread('m19_ico3.jpg', 0) template = cv.resize(template, (109, 46), interpolation = cv.INTER_CUBIC) print(template.shape) h, w = template.shape methods = ['cv.TM_CCOEFF', 'cv.TM_CCOEFF_NORMED', 'cv.TM_CCORR', 'cv.TM_CCORR_NORMED', 'cv.TM_SQDIFF', 'cv.TM_SQDIFF_NORMED'] for meth in methods: img = img2.copy() method = eval(meth) res = cv.matchTemplate(img, template, method) min_val, max_val, min_loc, max_loc = cv.minMaxLoc(res) if meth in ['cv.TM_SQDIFF', 'cv.MT_SQDIFF_NORMED']: top_left = min_loc else: top_left = max_loc bottom_right = (top_left[0] + w, top_left[1] + h) print(top_left, bottom_right) img2show = cv.cvtColor(img, cv.COLOR_GRAY2BGR) cv.rectangle(img2show, top_left, bottom_right, 1202404, 2) plt.subplot(221), plt.imshow(res, cmap = 'gray') plt.title('Matching Result'), plt.xticks([]), plt.yticks([]) plt.subplot(222), plt.imshow(img2show, cmap = 'gray') plt.title('Detected Point'), plt.xticks([]), plt.yticks([]) plt.suptitle(meth) plt.subplot(223), plt.imshow(template, cmap = 'gray') plt.title('Template'), plt.xticks([]), plt.yticks([]) plt.show()