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