Неверное обнаружение цифр с использованием tesseract ocr на видео кадрах в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Неверное обнаружение цифр с использованием tesseract ocr на видео кадрах в Python

Сообщение Anonymous »

Я пытаюсь рассчитать реальное время записи видео. У меня много видео, некоторые из которых были потеряны во время передачи. Все они в формате MP4. Чтобы получить продолжительность, я узнаю время с использованием pytesseract.image_to_string , но я получаю неправильные результаты. Тем не менее, распознавание цифр часто является неверным или несовместимо. /> Приведенное выше изображение дает аналогичный ответ
время рассчитывается из 'data2 /20240619_191208_first_frame.jpg' 19:12:66 < /code> < /p>
Полный код выглядит так: < /p>
< /p>

Код: Выделить всё

def digit_detect(image):
text = pytesseract.image_to_string(image, config='--psm 6 --oem 3 -c tessedit_char_whitelist=0123456789:')
return text

def resize_roi(image, x1 = 131, y1 = 11, x2 = 228, y2  = 32):
roi = image[y1:y2, x1:x2]
return roi

def preprocess_image(image):
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
_, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
return binary

# def extract_time_from_image(image):

#     regions = [
#         (131, 11, 142, 31, '012'),         # Tens of hours (0-2)
#         (142, 11, 155, 31, '0123456789'),  # Units of hours (0-9)
#         (163, 11, 179, 31, '012345'),      # Tens of minutes (0-5)
#         (179, 11, 193, 31, '0123456789'),  # Units of minutes (0-9)
#         (202, 11, 215, 31, '012345'),      # Tens of seconds (0-5)
#         (215, 11, 226, 31, '0123456789')   # Units of seconds (0-9)
#     ]

#     digits = []

#     for (x1, y1, x2, y2, whitelist) in regions:

#         preprocess = preprocess_image(image)

#         resized_roi = resize_roi(preprocess, x1, y1, x2, y2)

#         custom_config = f'--psm 6 --oem 3 -c tessedit_char_whitelist={whitelist}'
#         digit = pytesseract.image_to_string(resized_roi, config=custom_config)

#         digits.append(digit)

#     return digits

folder_path = 'data/output_rec/rkbt/1'
load_path = "data2"

if not os.path.isdir(folder_path):
print(f"Error1")
exit()

video_files = [f for f in os.listdir(folder_path) if f.endswith('.mp4')]

for video_file in video_files:
video_path = os.path.join(folder_path, video_file)

cap = cv2.VideoCapture(video_path)

if not cap.isOpened():
print(f"Error2")
continue

total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

ret, first_frame = cap.read()
if not ret:
print(f"Error3")
cap.release()
continue

cap.set(cv2.CAP_PROP_POS_FRAMES, total_frames - 1)

ret, last_frame = cap.read()
if not ret:
print(f"Error3")
cap.release()
continue

cap.release()

first_frame = resize_roi(first_frame)
last_frame = resize_roi(last_frame)

first_frame = preprocess_image(first_frame)
last_frame = preprocess_image(last_frame)

# print(extract_time_from_image(first_frame))
# print(extract_time_from_image(last_frame))

first_frame_path = os.path.join(load_path, f"{os.path.splitext(video_file)[0]}_first_frame.jpg")
last_frame_path = os.path.join(load_path, f"{os.path.splitext(video_file)[0]}_last_frame.jpg")

print(f"the time is calculated from '{first_frame_path}'" , digit_detect(first_frame))
print(f"the time is calculated from '{last_frame_path}'" , digit_detect(last_frame))

cv2.imwrite(first_frame_path, first_frame)
cv2.imwrite(last_frame_path, last_frame)

print(f"Saved images with the first and last frames for '{video_file}'")

Я пытался распознать каждую цифру отдельно, ограничивая множество возможных вариантов.>

Подробнее здесь: https://stackoverflow.com/questions/786 ... -in-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как запустить пользовательскую регрессию в кадрах данных/больших кадрах bigquery (с использованием удаленных функций)
    Anonymous » » в форуме Python
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Обнаружение цифровых чисел с помощью tesseract OCR
    Anonymous » » в форуме Python
    0 Ответы
    57 Просмотры
    Последнее сообщение Anonymous
  • Приложение Android OCR с использованием Tesseract
    Anonymous » » в форуме Android
    0 Ответы
    25 Просмотры
    Последнее сообщение Anonymous
  • FASTAPI с использованием Tesseract-OCR отлично работает в LocalHost Mac, но не на DigitaloCean Linux Server
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • FASTAPI с использованием Tesseract-OCR отлично работает в LocalHost Mac, но не на DigitaloCean Linux Server
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»