Есть ли способ найти рукописный текст из изображения с OpenCV? - PullRequest
1 голос
/ 17 марта 2019

Входное изображение, из которого я пытался извлечь символ

Выходное изображение

Я хочу обрезать все символы из изображения в папку и дать имимя строка за строкой, но символ плохо обрезан, а также я не могу назвать их правильно.В выходном изображении мой код распознает символ, но также и некоторые дополнительные строки.

Я пробовал этот код, но он не работает для всех размеров изображения.

import cv2
import numpy as np
cropped_Image_Location = "./"


image = cv2.imread(cropped_Image_Location+"Sample/17.jpg")
gray= cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
(thresh, im_bw) = cv2.threshold(gray, 128, 255, cv2.THRESH_BINARY cv2.THRESH_OTSU)
edges = cv2.Canny(im_bw, 100, 150, apertureSize=5)
cv2.imwrite(cropped_Image_Location + 'CroppedImages/edges-50-150.jpg', edges)
minLineLength = 100
lines = cv2.HoughLinesP(image=edges, rho=1, theta=np.pi / 180, 
threshold=200, lines=np.array([]),minLineLength=minLineLength, maxLineGap=20000)

try:
    a, b, c = lines.shape
    print(a,b,c)

    for i in range(a):
        cv2.line(im_bw, (lines[i][0][0], lines[i][0][1]), (lines[i][0][2], lines[i][0][3]), (255, 255, 255), 3, cv2.LINE_AA)
except:
    pass




_,thresh = cv2.threshold(im_bw,70,255,cv2.THRESH_BINARY_INV)
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
dilated = cv2.dilate(thresh,kernel,iterations = 0)
contours, hierarchy = 

cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)

i=1
for contour in contours:

    [x,y,w,h] = cv2.boundingRect(contour)
    print(x,y,w,h)
    if w>1 and h>1:
        print(x, y, w, h,"........")
        cv2.rectangle(im_bw, (x-3, y-3), (x + w+3, y + h+3), (0, 0, 0), 1)

        cv2.imwrite(cropped_Image_Location+"CroppedImages/"+str(i)+".jpg",image[y-2:y+h+2,x-2:x+w+2])

        i=i+1
cv2.imwrite(cropped_Image_Location + 'CroppedImages/lectureAll.jpg', im_bw)
# cv2.imshow("gray",im_bw)
cv2.waitKey(0)
cv2.destroyAllWindows()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...