SpeedProg
2020-01-02 6fc8c0f924c2c47ac3d518652fdba25da0dcdcb8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/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()