From 9d97a15f5d295e2bc44427fd18bdbaf94b23b57f Mon Sep 17 00:00:00 2001
From: wangzhibo <wangzhibo@shsening.com>
Date: 星期一, 14 三月 2022 15:53:20 +0800
Subject: [PATCH] change extract task

---
 /dev/null                                            |   99 ----------------
 debug/0_get_frame.py                                 |    2 
 debug/__pycache__/_image_clip_setting.cpython-36.pyc |    0 
 debug/2022-03-14-15-40-32.jpg                        |    0 
 extract_voltage_task.py                              |  153 ++++++++++++------------
 debug/2022-03-14-15-40-32_clip.jpg                   |    0 
 debug/7122.mp4                                       |    0 
 extract_voltage_task_backup.py                       |   98 ++++++++++++++++
 debug/_image_clip_setting.py                         |    3 
 debug/2_check_video_digits.py                        |    2 
 10 files changed, 179 insertions(+), 178 deletions(-)

diff --git a/debug/0_get_frame.py b/debug/0_get_frame.py
index 148cdb7..00f2e09 100644
--- a/debug/0_get_frame.py
+++ b/debug/0_get_frame.py
@@ -7,7 +7,7 @@
 
 time_now = datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S")
 #cap = cv2.VideoCapture(0)
-cap = cv2.VideoCapture("video.mp4")
+cap = cv2.VideoCapture("7122.mp4")
 ret, frame = cap.read()
 cv2.imwrite(time_now+".jpg", frame)
 print('鎵嬪姩璁剧疆 鍞竴鐨勫弬鏁�: 鏁板瓧浠〃鐩樼殑浣嶇疆: 瑕佺◢寰暀浜涗綑閲忋��')
diff --git a/debug/2022-03-14-15-40-32.jpg b/debug/2022-03-14-15-40-32.jpg
new file mode 100644
index 0000000..ef17065
--- /dev/null
+++ b/debug/2022-03-14-15-40-32.jpg
Binary files differ
diff --git a/debug/2022-03-14-15-40-32_clip.jpg b/debug/2022-03-14-15-40-32_clip.jpg
new file mode 100644
index 0000000..2ac1315
--- /dev/null
+++ b/debug/2022-03-14-15-40-32_clip.jpg
Binary files differ
diff --git a/debug/2_check_video_digits.py b/debug/2_check_video_digits.py
index b3419e9..b0e4bbb 100644
--- a/debug/2_check_video_digits.py
+++ b/debug/2_check_video_digits.py
@@ -127,7 +127,7 @@
         cv2.waitKey(0)
 
 
-cap = cv2.VideoCapture("video.mp4")  # for testing
+cap = cv2.VideoCapture("7122.mp4")  # for testing
 total_frame = 0 
 while(cap.isOpened()):
     ret, frame = cap.read()
diff --git a/debug/7122.mp4 b/debug/7122.mp4
new file mode 100644
index 0000000..20a67c5
--- /dev/null
+++ b/debug/7122.mp4
Binary files differ
diff --git a/debug/__pycache__/_image_clip_setting.cpython-36.pyc b/debug/__pycache__/_image_clip_setting.cpython-36.pyc
index 6af57c6..43014df 100644
--- a/debug/__pycache__/_image_clip_setting.cpython-36.pyc
+++ b/debug/__pycache__/_image_clip_setting.cpython-36.pyc
Binary files differ
diff --git a/debug/_image_clip_setting.py b/debug/_image_clip_setting.py
index f23a759..e7bcfeb 100644
--- a/debug/_image_clip_setting.py
+++ b/debug/_image_clip_setting.py
@@ -1,4 +1,5 @@
 锘�# -*- coding: utf-8 -*-
 __author__ = '涓婃捣鑹插畞'
 
-image_clip = [176,234,278,422]     # for  video.mp4
\ No newline at end of file
+#image_clip = [176,234,278,422]     # for  video.mp4
+image_clip = [226,266,220,300]     # for  7122.mp4
diff --git a/extract_voltage_task.py b/extract_voltage_task.py
index 391bf5f..cf30f1a 100644
--- a/extract_voltage_task.py
+++ b/extract_voltage_task.py
@@ -1,98 +1,99 @@
 锘�# -*- 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 + "/00.jpg",cv2.IMREAD_GRAYSCALE),0])
-    digits.append([cv2.imread(path + "/00-2.jpg",cv2.IMREAD_GRAYSCALE),0])
-    digits.append([cv2.imread(path + "/01.jpg",cv2.IMREAD_GRAYSCALE),1])
-    digits.append([cv2.imread(path + "/02.jpg",cv2.IMREAD_GRAYSCALE),2])
-    digits.append([cv2.imread(path + "/03.jpg",cv2.IMREAD_GRAYSCALE),3])
-    digits.append([cv2.imread(path + "/04.jpg",cv2.IMREAD_GRAYSCALE),4])
-    digits.append([cv2.imread(path + "/05.jpg",cv2.IMREAD_GRAYSCALE),5])
-    digits.append([cv2.imread(path + "/06.jpg",cv2.IMREAD_GRAYSCALE),6])
-    digits.append([cv2.imread(path + "/07.jpg",cv2.IMREAD_GRAYSCALE),7])
-    digits.append([cv2.imread(path + "/08.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 + "/09.jpg",cv2.IMREAD_GRAYSCALE),9])
+    # 鍜屾ā鏉跨殑鏁板瓧杩涜鍖归厤
+    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) <10:
-    	task_init_load_digits()
+    #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:
-    	# 杩涜妯℃澘鍖归厤
-    	#print(digitROI[0].shape)
-    	res = cv2.matchTemplate(binary, digitROI[0], cv2.TM_CCOEFF_NORMED)
-    	max_val = cv2.minMaxLoc(res)[1]
-    	source.append(max_val)
-    #print(source)
-    if max(source) > 0.5 :
-    	return digits[source.index(max(source))][1]
+        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 digits[source.index(max(source))][1]
     else:
-    	return "-"
-    	
-    	#鎴彇鐨勬憚鍍忓ご鐨勫睆骞曠殑澶у皬锛岄渶瑕佹崲鎴愮幇鍦虹殑澶у皬
-clip_rect = '175:235,275:420'
-rows = clip_rect.split(',')[0]  # 琛�
-cols = clip_rect.split(',')[1]  # 鍒�
-rows_start = int(rows.split(':')[0])
-rows_end = int(rows.split(':')[1])
-cols_start = int(cols.split(':')[0])
-cols_end = int(cols.split(':')[1])
-    
-totol_cols = (cols_end-cols_start)
-col_length_1 = int(totol_cols*0.212352113)
-col_length_2 = int(totol_cols*0.212352113)
-col_length_3_4 = int(totol_cols*0.212352113)
-
-col_start_2 = cols_start+int(totol_cols*0.265690141)
-col_start_3 = cols_start+int(totol_cols*0.485746479)
-col_start_4 = cols_start+int(totol_cols*0.75943662)
+        return "@"
 
 
-def get_most_digitals_and_image(image_frame):
-    digit_1 = get_most_simmilar_digit(image_frame[rows_start:rows_end,cols_start:cols_start+col_length_1])
-    digit_2 = get_most_simmilar_digit(image_frame[rows_start:rows_end,col_start_2:col_start_2+col_length_2])
-    digit_3 = get_most_simmilar_digit(image_frame[rows_start:rows_end,col_start_3:col_start_3+col_length_3_4])
-    digit_4 = get_most_simmilar_digit(image_frame[rows_start:rows_end,col_start_4:col_start_4+col_length_3_4])     
-    addtext =''
-    return_digital = 0
-    if digit_1 == '-':
-    	addtext= str(digit_2)+"."+str(digit_3)+str(digit_4)
-    	return_digital=int(digit_2)+0.1*int(digit_3)+0.01*int(digit_4)
-    else:
-    	addtext= str(digit_1)+str(digit_2)+"."+str(digit_3)+str(digit_4)
-    	return_digital=10*int(digit_1)+int(digit_2)+0.1*int(digit_3)+0.01*int(digit_4)
-    cv2.putText(image_frame, addtext, (320, 150), cv2.FONT_HERSHEY_COMPLEX, 1.5, (100, 200, 200), 5)
-    return return_digital,image_frame
-    
-    
-#娴嬭瘯鍏ュ彛
-'''
-if __name__ == '__main__':
-    img = cv2.imread("old__frame_2021-06-25-13-56-13.jpg")
-    return_digital,image_frame = get_most_digitals_and_image(img)
-    print(return_digital)
-    cv2.imwrite('image_frameimage_frameimage_frame.jpg',image_frame)
-'''
\ No newline at end of file
+def extrct_digits_from_frame(frame, col_start, col_end, rows_start, rows_end):
+    image = frame[col_start:col_end, rows_start:rows_end]
+    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
+    thresh = cv2.threshold(gray, 0, 255,
+                           cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
+    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (6, 6))
+    counter = cv2.morphologyEx(thresh.copy(), cv2.MORPH_OPEN, kernel)
+    #image_h = image.shape[0]
+    contours, hierarchy = cv2.findContours(counter, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
+    return_numbers = []
+    contours_count = 0
+    for c in contours:
+        x, y, w, h = cv2.boundingRect(c)
+        #if image_h*0.98 > h > image_h * 0.3:
+        if hierarchy[0][contours_count][3] ==0 :
+            #print((x, y, w, h))
+            #cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
+            one_number = get_most_simmilar_digit(cv2.threshold(cv2.resize(
+                gray[y:y+h, x:x+w], (20, 30)), 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1])
+            if one_number != '@':
+                return_numbers.append([x, one_number])
+            else:
+                return return_numbers, False
+    digit = 0
+    return_numbers = np.array(sorted(return_numbers))
+    return_numbers = return_numbers[:, -1]
+    if len(return_numbers) < 3:
+        return digit, False
+    elif len(return_numbers) == 3:
+        digit = return_numbers[0] + \
+            return_numbers[1]*0.1+return_numbers[2]*0.01
+    elif len(return_numbers) == 4:
+        digit = return_numbers[0]*10+return_numbers[1] + \
+            return_numbers[2]*0.1+return_numbers[3]*0.1
+    return round(digit, 2), True
diff --git a/extract_voltage_task_backup.py b/extract_voltage_task_backup.py
new file mode 100644
index 0000000..391bf5f
--- /dev/null
+++ b/extract_voltage_task_backup.py
@@ -0,0 +1,98 @@
+锘�# -*- 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 + "/00.jpg",cv2.IMREAD_GRAYSCALE),0])
+    digits.append([cv2.imread(path + "/00-2.jpg",cv2.IMREAD_GRAYSCALE),0])
+    digits.append([cv2.imread(path + "/01.jpg",cv2.IMREAD_GRAYSCALE),1])
+    digits.append([cv2.imread(path + "/02.jpg",cv2.IMREAD_GRAYSCALE),2])
+    digits.append([cv2.imread(path + "/03.jpg",cv2.IMREAD_GRAYSCALE),3])
+    digits.append([cv2.imread(path + "/04.jpg",cv2.IMREAD_GRAYSCALE),4])
+    digits.append([cv2.imread(path + "/05.jpg",cv2.IMREAD_GRAYSCALE),5])
+    digits.append([cv2.imread(path + "/06.jpg",cv2.IMREAD_GRAYSCALE),6])
+    digits.append([cv2.imread(path + "/07.jpg",cv2.IMREAD_GRAYSCALE),7])
+    digits.append([cv2.imread(path + "/08.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 + "/09.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) <10:
+    	task_init_load_digits()
+    for digitROI in digits:
+    	# 杩涜妯℃澘鍖归厤
+    	#print(digitROI[0].shape)
+    	res = cv2.matchTemplate(binary, digitROI[0], cv2.TM_CCOEFF_NORMED)
+    	max_val = cv2.minMaxLoc(res)[1]
+    	source.append(max_val)
+    #print(source)
+    if max(source) > 0.5 :
+    	return digits[source.index(max(source))][1]
+    else:
+    	return "-"
+    	
+    	#鎴彇鐨勬憚鍍忓ご鐨勫睆骞曠殑澶у皬锛岄渶瑕佹崲鎴愮幇鍦虹殑澶у皬
+clip_rect = '175:235,275:420'
+rows = clip_rect.split(',')[0]  # 琛�
+cols = clip_rect.split(',')[1]  # 鍒�
+rows_start = int(rows.split(':')[0])
+rows_end = int(rows.split(':')[1])
+cols_start = int(cols.split(':')[0])
+cols_end = int(cols.split(':')[1])
+    
+totol_cols = (cols_end-cols_start)
+col_length_1 = int(totol_cols*0.212352113)
+col_length_2 = int(totol_cols*0.212352113)
+col_length_3_4 = int(totol_cols*0.212352113)
+
+col_start_2 = cols_start+int(totol_cols*0.265690141)
+col_start_3 = cols_start+int(totol_cols*0.485746479)
+col_start_4 = cols_start+int(totol_cols*0.75943662)
+
+
+def get_most_digitals_and_image(image_frame):
+    digit_1 = get_most_simmilar_digit(image_frame[rows_start:rows_end,cols_start:cols_start+col_length_1])
+    digit_2 = get_most_simmilar_digit(image_frame[rows_start:rows_end,col_start_2:col_start_2+col_length_2])
+    digit_3 = get_most_simmilar_digit(image_frame[rows_start:rows_end,col_start_3:col_start_3+col_length_3_4])
+    digit_4 = get_most_simmilar_digit(image_frame[rows_start:rows_end,col_start_4:col_start_4+col_length_3_4])     
+    addtext =''
+    return_digital = 0
+    if digit_1 == '-':
+    	addtext= str(digit_2)+"."+str(digit_3)+str(digit_4)
+    	return_digital=int(digit_2)+0.1*int(digit_3)+0.01*int(digit_4)
+    else:
+    	addtext= str(digit_1)+str(digit_2)+"."+str(digit_3)+str(digit_4)
+    	return_digital=10*int(digit_1)+int(digit_2)+0.1*int(digit_3)+0.01*int(digit_4)
+    cv2.putText(image_frame, addtext, (320, 150), cv2.FONT_HERSHEY_COMPLEX, 1.5, (100, 200, 200), 5)
+    return return_digital,image_frame
+    
+    
+#娴嬭瘯鍏ュ彛
+'''
+if __name__ == '__main__':
+    img = cv2.imread("old__frame_2021-06-25-13-56-13.jpg")
+    return_digital,image_frame = get_most_digitals_and_image(img)
+    print(return_digital)
+    cv2.imwrite('image_frameimage_frameimage_frame.jpg',image_frame)
+'''
\ No newline at end of file
diff --git a/extract_voltage_task_new.py b/extract_voltage_task_new.py
deleted file mode 100644
index cf30f1a..0000000
--- a/extract_voltage_task_new.py
+++ /dev/null
@@ -1,99 +0,0 @@
-锘�# -*- coding: utf-8 -*-
-
-
-# 鎻愬彇鐢靛帇浠诲姟  鍦ㄨ繑鍥炵殑鍥剧墖涓婃埅鍙栧嚭娑叉櫠灞忓箷鐨勫ぇ灏忓昂瀵�
-__author__ = '涓婃捣鑹插畞'
-
-import cv2
-import numpy as np
-
-
-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 digits[source.index(max(source))][1]
-    else:
-        return "@"
-
-
-def extrct_digits_from_frame(frame, col_start, col_end, rows_start, rows_end):
-    image = frame[col_start:col_end, rows_start:rows_end]
-    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
-    thresh = cv2.threshold(gray, 0, 255,
-                           cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]
-    kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (6, 6))
-    counter = cv2.morphologyEx(thresh.copy(), cv2.MORPH_OPEN, kernel)
-    #image_h = image.shape[0]
-    contours, hierarchy = cv2.findContours(counter, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
-    return_numbers = []
-    contours_count = 0
-    for c in contours:
-        x, y, w, h = cv2.boundingRect(c)
-        #if image_h*0.98 > h > image_h * 0.3:
-        if hierarchy[0][contours_count][3] ==0 :
-            #print((x, y, w, h))
-            #cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
-            one_number = get_most_simmilar_digit(cv2.threshold(cv2.resize(
-                gray[y:y+h, x:x+w], (20, 30)), 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1])
-            if one_number != '@':
-                return_numbers.append([x, one_number])
-            else:
-                return return_numbers, False
-    digit = 0
-    return_numbers = np.array(sorted(return_numbers))
-    return_numbers = return_numbers[:, -1]
-    if len(return_numbers) < 3:
-        return digit, False
-    elif len(return_numbers) == 3:
-        digit = return_numbers[0] + \
-            return_numbers[1]*0.1+return_numbers[2]*0.01
-    elif len(return_numbers) == 4:
-        digit = return_numbers[0]*10+return_numbers[1] + \
-            return_numbers[2]*0.1+return_numbers[3]*0.1
-    return round(digit, 2), True

--
Gitblit v1.9.1