Opencv: 6-значный рукописный почтовый индекс - PullRequest
0 голосов
/ 21 октября 2019

Я пытаюсь обрезать 6-значный рукописный почтовый индекс для приложения сортировки по почтовому индексу, учитывая, что код работает нормально с 10-значным номером телефона, но не может распознать 6-значный контур. Пожалуйста, исправьте данный код или представьте лучший альтернативный код для выполнения вышеупомянутой задачи.

import numpy as np
import cv2
import imutils


image = cv2.imread("pin5.jpg")
image = imutils.resize(image, width=500)

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (7, 7), 0)


ret,thresh1 = cv2.threshold(gray ,127,255,cv2.THRESH_BINARY_INV)


dilate = cv2.dilate(thresh1, None, iterations=2)


cnts = cv2.findContours(dilate.copy(), cv2.RETR_EXTERNAL,
    cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] 
orig = image.copy()
i = 0

for cnt in cnts:

    if(cv2.contourArea(cnt) < 80):
        continue


    x,y,w,h = cv2.boundingRect(cnt)


    roi = image[y:y+h, x:x+w]


    cv2.rectangle(orig,(x,y),(x+w,y+h),(0,255,0),2)

    cv2.imwrite("roi" + str(i) + ".png", roi)

    i = i + 1

cv2.imshow("Image", orig)
cv2.waitKey(0)
...