Чтение изображений в видео-пайтессере - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь использовать pytesseract в видео.Ну а после обрезки кадра я получаю изображение для прохождения pytesseract.Если я передаю его напрямую, он не распознает символы хорошо, но если изображение записывается с помощью cv2.imwrite в формате png, а затем я читаю его и использую tesseract, оно распознает его отлично, поскольку это изображение более высокого качества, ноЯ не знаю почему.Кто-нибудь знает, как обрезать изображение кадра с таким же качеством?Спасибо

def obtenerTexto(frame):
    #here i have the text always
    h, w, c = imagen.shape
    hini = int(0.84*h)
    wfin = int(0.45*w)
    text = frame[hini:h, 0:wfin]
    #resize the imagen and i make a threshold
    resize = cv2.resize(im, None,fx=2, fy=2, interpolation = cv2.INTER_CUBIC)
    gray = cv2.cvtColor(resize, cv2.COLOR_BGR2GRAY)
    retval, chat = cv2.threshold(gray,150,255,cv2.THRESH_BINARY)
    #pytesseract
    textoNuevo = pytesseract.image_to_string(chat).split("\n")

#Video Capture
video_file = 'videos/Video.flv'
cap = cv2.VideoCapture(video_file)

# Properties
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 0.6
color = (0,255,0)
thickness = 2
height_prop = cv2.CAP_PROP_FRAME_HEIGHT
fps_prop = cv2.CAP_PROP_FPS

while(cap.isOpened()):

    ret, frame = cap.read()
    if ret == True:
        # Text position   
        height = int(cap.get(height_prop))
        position = (50, height - 50)  
        # Frames per second
        fps = "{0:.2f}".format(cap.get(fps_prop))
        text = "FPS: " + fps
        # Put text
        cv2.putText(frame, text, position, font, font_scale, color, thickness)
        # Serching text and OCR
        obtener_texto(frame)
        # Display
        height , width , layers =  frame.shape
        new_h=int(height/2)
        new_w=int(width/2)
        resize = cv2.resize(frame, (new_w, new_h))
        cv2.imshow("Video", resize)
        # Exit?
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break

# Release everything if job is finished
cap.release()
cv2.destroyAllWindows()

...