wangzhibo
2022-03-24 a01eb79d5bd40decaaa4693534de77efdf330bb8
bug fix   w > image_w /4
1个文件已修改
23 ■■■■ 已修改文件
extract_voltage_task.py 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
extract_voltage_task.py
@@ -19,7 +19,7 @@
    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 + "/0-2.jpg", cv2.IMREAD_GRAYSCALE), 0])
    digits.append([cv2.imread(path + "/0-3.jpg", cv2.IMREAD_GRAYSCALE), 0])
    digits.append([cv2.imread(path + "/0-3.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])
@@ -64,8 +64,6 @@
        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)
@@ -73,7 +71,8 @@
                           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)
    contours, hierarchy = cv2.findContours(counter, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    contours, hierarchy = cv2.findContours(
        counter, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    return_numbers = []
    contours_count = 0
    image_h = image.shape[0]
@@ -81,31 +80,31 @@
    digit = -1
    for c in contours:
        x, y, w, h = cv2.boundingRect(c)
        if hierarchy[0][contours_count][3] ==0 and h > image_h * 0.3:
            if w>w/4:
        if hierarchy[0][contours_count][3] == 0 and h > image_h * 0.3:
            if w > image_w/4:
                half_width = int(w/2)
                one_number = get_most_simmilar_digit(cv2.threshold(cv2.resize(
                gray[y:y+h, x:x+half_width], (20, 30)), 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1])
                    gray[y:y+h, x:x+half_width], (20, 30)), 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1])
                if one_number != '@':
                    return_numbers.append([x, one_number])
                else:
                    return digit, False
                one_number = get_most_simmilar_digit(cv2.threshold(cv2.resize(
                gray[y:y+h, x+half_width:x+w], (20, 30)), 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1])
                    gray[y:y+h, x+half_width:x+w], (20, 30)), 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1])
                if one_number != '@':
                    return_numbers.append([x+half_width, one_number])
                else:
                    return digit, False
            else:
                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])
                    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 digit, False
        contours_count +=1
    if len(return_numbers)==0:
            return digit,False
        contours_count += 1
    if len(return_numbers) == 0:
        return digit, False
    return_numbers = np.array(sorted(return_numbers))
    return_numbers = return_numbers[:, -1]
    if len(return_numbers) < 3: