обработка видео в реальном времени с использованием многопоточности в Python - PullRequest
0 голосов
/ 27 декабря 2018

Я работаю над обработкой видео в реальном времени с использованием многопоточности в Python.Вот процессы:

  1. Я открываю веб-камеру и фиксирую кадры.
  2. Я создаю 10 потоков для обработки видео (обнаружения).
  3. Потокипоместите эти кадры в приоритетную очередь (input_queue).(Я храню кадры в последовательном порядке)

  4. Потоки начинают брать кадры из очереди и обрабатывают.

  5. Потоки помещают кадры в output_queue для показа.
  6. И, наконец, один метод читает кадры из output_queue и показывает.Здесь вывод должен отображаться мгновенно как обработанное видео при захвате изображений с камеры.(может быть пять секунд позади.)

На самом деле я делаю эти процессы.Но я запускаю свой проект, 10 потоков очень быстро обрабатывают кадры из очереди, и мое выходное видео закрывается через 5 секунд.Из-за output_queue пусто.

Я пытаюсь поставить time.sleep() перед обработкой или перед чтением кадров, или если очередь пуста, но в это время выходное видео начинается очень поздно и снова закрывается или видео многократно открывается и закрывается.

Как мне поступить?Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 27 декабря 2018

Метод Queue.get() вызывает исключение Queue.Empty, когда очередь пуста.Вам, вероятно, нужно поймать и обработать это, или предотвратить его поднятие.

try:
    image = output_queue.get()
    # display image
except Queue.Empty:
    pass

Чтобы не допустить этого:

if not output_queue.empty():
    image = output_queue.get()
    # display image
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...