wangzhibo
2022-03-23 69b8cbd754284a2071d06149f0c92d9fe50a744e
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
65
66
67
68
69
70
71
72
73
74
75
76
77
# -*- coding: utf-8 -*-
 
 
#提取电压任务  在返回的图片上截取出液晶屏幕的大小尺寸
__author__ = '上海色宁'
 
import os
import sys
import cv2
import numpy as np
import datetime
 
 
def task_init_load_digits():
 
    # 加载数字模板
    path = './templates'    # 这个地方就是获取当前运行目录 获取函数在主函数里面
    #和模板的数字进行匹配
    digits.append([cv2.imread(path + "/@-0.jpg",cv2.IMREAD_GRAYSCALE),'@'])
    digits.append([cv2.imread(path + "/@-1.jpg",cv2.IMREAD_GRAYSCALE),'@'])
    digits.append([cv2.imread(path + "/@-2.jpg",cv2.IMREAD_GRAYSCALE),'@'])
    digits.append([cv2.imread(path + "/0-0.jpg",cv2.IMREAD_GRAYSCALE),0])
    digits.append([cv2.imread(path + "/0-1.jpg",cv2.IMREAD_GRAYSCALE),0])
    digits.append([cv2.imread(path + "/1-0.jpg",cv2.IMREAD_GRAYSCALE),1])
    digits.append([cv2.imread(path + "/1-1.jpg",cv2.IMREAD_GRAYSCALE),1])
    digits.append([cv2.imread(path + "/2-0.jpg",cv2.IMREAD_GRAYSCALE),2])
    digits.append([cv2.imread(path + "/2-1.jpg",cv2.IMREAD_GRAYSCALE),2])
    digits.append([cv2.imread(path + "/3-0.jpg",cv2.IMREAD_GRAYSCALE),3])
    digits.append([cv2.imread(path + "/4-0.jpg",cv2.IMREAD_GRAYSCALE),4])
    digits.append([cv2.imread(path + "/5-0.jpg",cv2.IMREAD_GRAYSCALE),5])
    digits.append([cv2.imread(path + "/5-1.jpg",cv2.IMREAD_GRAYSCALE),5])
    digits.append([cv2.imread(path + "/5-2.jpg",cv2.IMREAD_GRAYSCALE),5])
    digits.append([cv2.imread(path + "/6-0.jpg",cv2.IMREAD_GRAYSCALE),6])
    digits.append([cv2.imread(path + "/7-0.jpg",cv2.IMREAD_GRAYSCALE),7])
    digits.append([cv2.imread(path + "/8-0.jpg",cv2.IMREAD_GRAYSCALE),8])
    digits.append([cv2.imread(path + "/8-1.jpg",cv2.IMREAD_GRAYSCALE),8])
    digits.append([cv2.imread(path + "/8-2.jpg",cv2.IMREAD_GRAYSCALE),8])
    digits.append([cv2.imread(path + "/8-3.jpg",cv2.IMREAD_GRAYSCALE),8])
    digits.append([cv2.imread(path + "/8-4.jpg",cv2.IMREAD_GRAYSCALE),8])
    digits.append([cv2.imread(path + "/9-0.jpg",cv2.IMREAD_GRAYSCALE),9])
    digits.append([cv2.imread(path + "/9-1.jpg",cv2.IMREAD_GRAYSCALE),9])
    digits.append([cv2.imread(path + "/9-2.jpg",cv2.IMREAD_GRAYSCALE),9])
    digits.append([cv2.imread(path + "/9-3.jpg",cv2.IMREAD_GRAYSCALE),9])
    digits.append([cv2.imread(path + "/9-4.jpg",cv2.IMREAD_GRAYSCALE),9])
 
 
digits = []
 
def get_most_simmilar_digit(target_img):
    source = []
    #img_gray = cv2.cvtColor(target_img, cv2.COLOR_BGR2GRAY)
    #ret, binary = cv2.threshold(img_gray,0,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)
    #循环对比模板的图片
    if len(digits) <5:
        task_init_load_digits()
    for digitROI in digits:
        res = cv2.matchTemplate(target_img, digitROI[0], cv2.TM_CCOEFF_NORMED)
        max_val = cv2.minMaxLoc(res)[1]
        source.append(max_val)
    #print(max(source))
    if max(source) > 0.5 :
        return str(digits[source.index(max(source))][1])
    else:
        return "@"
    
 
if __name__ == '__main__':
    input_dir = "images52"
    filename = os.listdir(input_dir)    # 获取文件夹文件
    for file in filename:
        image = cv2.imread(input_dir + "/" + file,0)    # 读取图片
        ret, binary = cv2.threshold(image,0,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)
        num = get_most_simmilar_digit(binary)
        cv2.imwrite("images52_infer/" + str(num)+"_" + file,binary)    # 读取图片