我正在使用OpenCV 3.如果摄像机与网络断开连接或帧出现问题,使用带有IP摄像机的VideoCapture抓取帧会阻塞。
我首先检查是否videoCapture.isOpened()
。如果是,我尝试了这些方法,但似乎没有任何效果:
1)抓取器>>帧
if(grabber.isOpened()) {
grabber >> frame;
// DO SOMETHING WITH FRAME
}
2)阅读
if(grabber.isOpened()) {
if(!grabber.grab()){
cout << "failed to grab from camera" << endl;
} else {
if (grabber.retrieve(frame,0) ){
// DO SOMETHING WITH FRAME
} else {
// SHOW ERROR
}
}
}
3)抓取/检索
if(grabber.isOpened()) {
if ( !grabber.read(frame) ) {
cout << "Unable to retrieve frame from video stream." << endl;
}
else {
// DO SOMETHING WITH FRAME
}
}
视频流在某个时刻卡住了一个包含所有先前选项的帧,每个选项都阻止但不退出或返回任何错误。
您知道是否有办法处理或解决这个问题?也许一些验证,尝试/捕捉或计时器?