#!/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()
|