# -*- coding: utf-8 -*- #测试模板匹配 __author__ = '上海色宁' import os import sys import cv2 import numpy as np import uuid def load_digits(): # 加载数字模板 path = './tm2' # 这个地方就是获取当前运行目录 获取函数在主函数里面 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")) #digits.append(cv2.imread(path + "/--.jpg")) def get_most_simmilar_digit(target_img): source = [] # 遍历数字模板 for digitROI in digits: # 进行模板匹配 #cv2.imshow('target_img',target_img) #cv2.imshow('digitROI',digits[4]) res = cv2.matchTemplate(target_img, digitROI, cv2.TM_CCOEFF_NORMED) max_val = cv2.minMaxLoc(res)[1] source.append(max_val) #print(source) print(source.index(max(source))) #判断和模板匹配的相似度 if max(source) > 0.5 : return source.index(max(source)) else: return '-' digits = [] # 测试 if __name__ == '__main__': load_digits(); path = "as" filename = os.listdir(path) # 获取文件夹文件 for file in filename: img = cv2.imread(path + "/" + file) # 读取图片 t,dst1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY) HSV = cv2.cvtColor(dst1, cv2.COLOR_BGR2HSV) H, S, V = cv2.split(HSV) LowerYellow = np.array([20, 20, 20]) UpperYellow = np.array([30, 255, 255]) mask = cv2.inRange(HSV, LowerYellow, UpperYellow) YelloThings = cv2.bitwise_and(dst1, dst1, mask=mask) #cv2.imshow("src",YelloThings) #cv2.waitKey(0) addtext =get_most_simmilar_digit(YelloThings)#调取上面的方法 if not addtext=="-" : cv2.imwrite(path + "2/"+str(addtext)+"__"+file,YelloThings) if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.destroyAllWindows()