簡體   English   中英

在 Python 中使用多線程進行實時視頻處理

[英]real time video processing using multithreading in Python

我正在使用 Python 中的多線程進行實時視頻處理。 這里的過程是:

  1. 我打開網絡攝像頭並捕獲幀。
  2. 我為視頻處理(檢測)創建了 10 個線程。
  3. 線程將這些幀放入優先級隊列 ( input_queue )。 (我按順序保持幀)

  4. 線程開始從隊列中獲取幀並進行處理。

  5. 線程將幀放入output_queue進行顯示。
  6. 最后一種方法從output_queue讀取幀並顯示。 在這里,當從相機捕獲圖像時,輸出需要立即顯示為處理后的視頻。 (可能落后五秒。)

其實我做這些過程。 但是我運行我的項目,10 個線程從隊列中非常快速地處理幀,我的輸出視頻在 5 秒后關閉。 因為output_queue是空的。

我嘗試將time.sleep()放在處理之前或讀取幀之前,或者如果隊列為空但此時輸出視頻開始很晚並再次關閉或視頻反復打開和關閉。

我該怎么辦? 謝謝您的幫助。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM