我正在UBUNTU平臺上工作,我從兩個不同的相機(基於事件捕獲)接收圖像(通過UDP
)並處理圖像(3D重建)。我想以這樣一種方式執行此操作,即在圖像接收操作正在進行時,圖像處理操作應該並行開始。我知道我可以爲這兩個並行操作使用兩個posix線程。但我很困惑,我該如何同步這兩個線程,以便線程在線程收到至少一對圖像後才能開始。如果我使process()
線程等待mutex
條件(每次它將收到一對映像時將由線程設置),接收將比處理快得多,並且線程可以多次設置條件一個圖像對正在被process()
線程處理。什麼可能是一個更好的方式來實現這一行動?圖像接收和處理的並行操作C
回答
在接收線程的線程安全隊列中放置圖像以處理(或指向每個圖像的指針或與信息有關的結構,無論您的機制是什麼)。使用semaphore或pthread_cond可以在您將項目入隊後發出處理線程信號。
處理線程應該阻塞直到它收到cond信號,並且應該只在隊列爲空時阻塞。當此線程暢通時,它應該從隊列中彈出一個圖像並開始工作。當它完成處理時,它應該(在循環的頂部)決定是否阻止或處理另一個圖像。如果隊列爲空,則阻塞。如果隊列不是空的,它會彈出一個圖像並對其進行處理。
是的。視頻處理/流媒體的難點在於流量控制。由於他/她在接收器工作速度比處理器快的問題中說明,所以OP需要爲此確定策略。 –
好的,所以在處理之前緩衝更多的數據。不知道爲什麼這是一個問題。他聽起來像他有更多的基本線程問題,而不是你所描述的。這是一個非常常見的問題,除了多重緩衝外,還有相同的機制解決,但這種緩衝僅僅是因爲你需要一個臨時的數據接收器。我們不需要這樣的接收器,因爲我們將完全接收的圖像放在隊列中,這正是他想要的。 –
- 1. 的PHP - 圖像處理和操作
- 2. 平滑操作在圖像處理
- 3. 如何處理/操作分割圖像
- 4. 並行圖像處理僞像
- 5. 圖像處理中的並行計算?
- 6. hadoop上的並行圖像處理
- 7. C++圖像處理
- 8. 位操作員問題和圖像處理中的隱寫術
- 9. Java多播接收數據和並行處理
- 10. Sencha事件處理和視圖操作
- 11. Raspicam和C++的圖像處理
- 12. 發送和接收圖像文件C#
- 13. 試圖處理IO操作
- 14. 並行處理分割大圖像
- 15. C++的圖像處理庫
- 16. C++中的圖像處理
- 17. C中的圖像處理#
- 18. C++中的圖像處理
- 19. c中的圖像處理#
- 20. GPU上的圖像處理算法,並行處理Matlab
- 21. 無法讓廣播接收器處理含有多個操作的意圖
- 22. 收據的批量圖像處理
- 23. 閱讀和處理圖像(opencv/c + +)
- 24. 圖像處理程序在大圖像集上的並行化
- 25. 如何直接在原始圖像的ROI部分進行圖像處理操作?
- 26. 接收並處理SOAP消息
- 27. C#圖像處理:圖像相似性
- 28. C#AForge.Net圖像處理圖像
- 29. c#圖像座標處理
- 30. 用C處理圖像#
如果您的接收器可以超出處理範圍,您想要對整體數據流量控制做些什麼?使用生產者 - 消費者隊列將圖像對象排隊到處理器是相當容易的,但你必須首先決定數據流控制機制。 –