opencv videocapture以rtsp读取网络摄像头时,如果没网,程序就许停在那,什么都不干,既不会中断,也不会报错,也不往下执行,试过判断读取是否为空,但是在读取的时候就不往下执行了,根本没法判断,求助!!!
3条回答 默认 最新
- Saeba 2017-10-15 07:35关注
原因是 videocapture 裡頭有個 thread (A: consumer thread) 會一直去讀 buffer 裡面的資料, 即使沒網, 該 thread 還是會一直讀去舊資料, 所以不會報錯. 另外一個 thread (B: worker thread) 會在 driver 當中註冊一個 callback fucntion 定時把資料丟向 buffer 會從
buffer 當中, 此時 buffer 內的資料會被一直覆蓋.你該做的事情有兩個. 在條件判斷中新增, 是否有網路存在. 如果沒有, 就要修改 thread A flag 參數, 讓他停下來. 另一件事是預防萬一, 要把讀進來的 buffer, 做 bit-by-bit 比較. 如果都一模一樣, 超過一秒鐘 (一秒種 30 fps, 比對 30 次) 就該修改 thread A flag 參數, 使他停下來.
希望對你有幫助 !!
解决 无用评论 打赏 举报