用c++處理相機拍攝的圖片流,處理程序分為三步:1、從相機API得到圖片(mat),2、對圖片進行拼接重組(需要時間線上多張圖片),3、將拼接好的圖片保存輸出。
使用三個執行緒分別處理三個步驟,資料通過兩個list進行互動。
目前的問題是,在第一個執行緒,使用while(true)回圈從相機拿取圖片時,檢測到兩次while執行的時間不穩定,多數情況小于1毫秒,而偶爾會出現超過200毫秒的情況,執行緒不能及時進入回圈,拿不到相機的影像,進而丟幀,導致影像失效。
目前嘗試過的方法有:
1、使用SetThreadPriority(t_s.native_handle(), THREAD_PRIORITY_TIME_CRITICAL);提高執行緒1的優先級,無效;
2、使用 SetThreadAffinityMask(t_s.native_handle(), 248);給執行緒1分配單獨的CPU核(5/8),無效;
3、將執行緒2與執行緒3合并,使用一個執行緒進行操作,無效
4、以上三種方法同時使用,無效
在檢測范圍內可以緩解這個現象的方法包括:
1、人工降低幀頻,有效
2、不開啟執行緒3,即不開啟存圖執行緒,有效。
請問各位大神,為什么會出現這樣的情況,該如何解決這個問題呢?
謝謝各位。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/9556.html
標籤:其它技術問題
上一篇:cv根據記憶體地址生成矩陣
下一篇:求助
