У меня есть видео с дрона FPV, из которого мне нужно извлечь координаты GPS. Текст белый, но из-за плохого качества видео кажется серым и голубым. Так как фон меняется, у меня есть некоторые проблемы, потому что в некоторых кадрах фон имеет совершенно другой цвет, а в некоторых кадрах цвет, аналогичный текстовому.
Вот 2 исходных изображения (рамки) из видео :
темный фон
светлый фон
А вот и код, который я нашел после поиска в Google:
import numpy as np
import cv2
import pytesseract
cap = cv2.VideoCapture('v1.avi')
p = 10000
while(cap.isOpened()):
ret, frame = cap.read()
img = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
img = img[380:460, 220:640]
img = cv2.bilateralFilter(img, 9, 27, 27)
img = cv2.threshold(img, 0, 255,
cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
img = cv2.GaussianBlur(img, (9, 9), 0)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
img = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
img = cv2.threshold(img, 0, 255, cv2.THRESH_OTSU)[1]
img = cv2.dilate(img, kernel)
img = cv2.threshold(img, 0, 250, cv2.THRESH_BINARY_INV)[1]
cv2.imshow('frame', img)
cv2.imshow('or', frame)
print('\n==============')
print(pytesseract.image_to_string(img, config='digits'))
if cv2.waitKey(50) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
А также результаты:
Темный фон
Светлый фон
Как вы можете видеть, во втором случае фон нечеткий, есть некоторый шум, и из этого изображения Tesseract не извлекает текст правильно.
РЕДАКТИРОВАТЬ: По некоторым причинам я не могу поделиться видео, о котором я писал выше, но вот аналогичное видео с Youtube , и если текст можно извлечь из это видео, я думаю, что этот метод также будет работать для меня или решить, по крайней мере, много проблем:
* 10 41 *