C++突然阻止使用VideoCapture从IP摄像机读取帧

标签 c++ opencv frame video-capture ip-camera

我正在使用 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
    } 
}

视频流在某个点卡住,使用所有先前的选项抓取一个帧,每个选项都阻塞但不退出或返回任何错误。

你知道有没有办法处理或解决这个问题?也许一些验证、try/catch 或计时器?

最佳答案

此问题由 this merge 解决但不幸的是 opencv_ffmpeg.dll 还没有发布。

你可以找到here更新了 opencv_ffmpeg.dll 和测试。

关于C++突然阻止使用VideoCapture从IP摄像机读取帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36750685/

相关文章:

c++ - 线程的处理器滴答数

c++ - 为什么专用模板函数不能同时接受类型及其常量版本?

python - 如何自动编辑 x,y 路径

java - 使用 Java KeyEvent 使动画正常工作

ios - 如何更改 tableViewCellForRowAtIndex 中的 customTableViewCell 中的按钮框架

c++ - 使用bash脚本进行代码编辑和测试处理

c++ - 指向结构数组的指针

python - OpenCV 从源 Windows 生成错误 "RC Object"

opencv - 在单个平面上计算多个标记的单应性

iphone - "Incorrect"iPhone 中重新定位后的框架/窗口大小