我用C++編寫了一個軟件,用於使用openCV庫處理來自相機的視頻流。 我想在處理視頻幀時保存視頻幀,以便有可能使用與輸入視頻完全相同的視頻多次離線運行代碼。 我正在考慮使用生產者/消費者模式使用多線程。使用多線程進行圖像細化和保存
我的想法是有一個生產者(圖像採集卡)和兩個消費者(一個用於處理圖像,另一個用於保存文件上的幀(如視頻))。
我沒有多線程編程經驗,所以我在網上搜索了一些教程。 我發現的所有教程都是關於一個生產者和一個消費者的,但我需要的是稍微不同的:我的需求應該是一個生產者,向兩個消費者發送相同的圖像,並且在兩個消費者完成他們的工作後,繼續下一幀。重點是生產者將有一個隊列存儲幀,而消費者都需要從同一個隊列讀取同一個元素。
你有什麼建議嗎? 你認爲我選擇的模式適合我的需要嗎?
謝謝。
你的意思是*將圖像發送給2位消費者?當然,你只需將它放在共享內存中,讓它們訪問它,而不是將它發送到任何地方。我沒有看到發送它兩次的意義 - 讓每個人都可以隨意訪問它,然後每個人都可以指出它們何時完成,這告訴你可以覆蓋它。同樣考慮使用幾幀的緩衝區,以便例如可以容忍磁盤寫入速度的微小變化。 –