Python обработка изображения камеры (видео) в реальном времени - PullRequest
0 голосов
/ 29 мая 2020

Когда камера в реальном времени обнаруживает какой-то текст, он обрабатывается функцией (img_process в моем коде)

, но это занимает так много времени (долгая задержка), камера кажется остановленной.

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

код, как показано ниже

from PIL import Image     #pip install pillow
from pytesseract import * #pip install pytesseract
import pytesseract
import configparser
import os
import cv2
import numpy as np
import pandas as pd
from imutils.video import VideoStream
from imutils.video import FPS
import argparse
import imutils
import time
from concurrent.futures import ThreadPoolExecutor

config = configparser.ConfigParser()
config.read(os.path.dirname(os.path.realpath(__file__)) + os.sep + 'envs' + os.sep + 'property.ini')

if __name__ == "__main__":
data = pd.read_csv('./test6.txt', sep='\t', engine='python')


print("Part N/O Scan...")

vs = VideoStream(src=1).start()
time.sleep(2.0)
fps = FPS().start()

while True:

    frame = vs.read()
    frame = imutils.resize(frame, width=500)

    (h, w) = frame.shape[:2]
    blob = cv2.dnn.blobFromImage(cv2.resize(frame, (300, 300)),
        0.007843, (300, 300), 127.5)

    #problem(delay) happen in this line
    img_process(frame)

    cv2.imshow("Frame", frame)
    key = cv2.waitKey(1) & 0xFF


    if key == ord("q"):
        break

    fps.update()


fps.stop()
print("[INFO] elapsed time: {:.2f}".format(fps.elapsed()))
print("[INFO] approx. FPS: {:.2f}".format(fps.fps()))

cv2.destroyAllWindows()
vs.stop()

1 Ответ

0 голосов
/ 29 мая 2020

В этом случае я обычно пропускаю несколько кадров из ввода. Добавьте что-то вроде этого в while l oop

while True:
    for i in range(5): # you can adjust this number
        frame = vs.read()
    frame = imutils.resize(frame, width=500)

Это работает очень хорошо, если вы хотите выводить видео в реальном времени.

...