Я пытаюсь использовать 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()