wangzhibo
2022-03-24 d4c2d3ef0336742f8c40ff7f33507a84a315543d
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# -*- coding: utf-8 -*-
 
 
#测试模板匹配灰度
__author__ = '上海色宁'
 
import os
import sys
import cv2
from cv2 import waitKey
import numpy as np
import uuid
 
 
def load_digits():
    # 加载数字模板文件夹
    path = './tm'    # 这个地方就是获取当前运行目录 获取函数在主函数里面
    #多加几个模板图片
 
   
    digits.append(cv2.imread(path + "/t_00.jpg"))
    digits.append(cv2.imread(path + "/t_01.jpg"))
    digits.append(cv2.imread(path + "/t_02.jpg"))
    digits.append(cv2.imread(path + "/t_03.jpg"))
    digits.append(cv2.imread(path + "/t_04.jpg"))
    digits.append(cv2.imread(path + "/t_05.jpg"))
    digits.append(cv2.imread(path + "/t_06.jpg"))
    digits.append(cv2.imread(path + "/t_07.jpg"))
    digits.append(cv2.imread(path + "/t_08.jpg"))
    digits.append(cv2.imread(path + "/t_09.jpg"))
        
        
def get_most_simmilar_digit(target_img):
    source = []
    for digitROI in digits:
        res = cv2.matchTemplate(target_img, digitROI, cv2.TM_CCOEFF_NORMED)
        max_val = cv2.minMaxLoc(res)[1]
        source.append(max_val)
    print(source.index(max(source)))
    #判断匹配度,大于0.5的选取
    if max(source) > 0.5 :
        return source.index(max(source))
    else:
        return '-'
 
 
 
 
digits = []
    
# 测试
if __name__ == '__main__':
    load_digits()
    path = "./images"
    filename = os.listdir(path)    # 获取文件夹文件
    for file in filename:
        img = cv2.imread(path + "/" + file)    # 读取图片
        cv2.imshow('a',img)
        waitKey(0)
        addtext =get_most_simmilar_digit(img)
        if not addtext=="-" :
            cv2.imwrite(path + "2/"+str(addtext)+"__"+file,img)
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break