VideoCapture上的OpenCV2.4.2未处理异常

Car*_*ote 6 opencv cmake

我刚刚安装了OpenCV2.4.2并使用CMake创建了一个OpenCV项目.我没有得到任何编译错误.我有几个处理图像的功能,我有2个应用程序:

1-处理视频中的数据

2-处理模拟数据.

除了从视频中提取数据之外,两个应用程序都是相同的.

问题:处理视频的应用程序崩溃了

program.exe访问冲突读取位置0x049f08c0中0x75d8a048处的未处理异常.

在阅读框架时,它会在代码的这一部分崩溃:

cv::VideoCapture _video;
while(1) 
{       
        // grab the frame
        _video >> frame;  <-------------CRASHES HERE
                processFrame(frame);
}
Run Code Online (Sandbox Code Playgroud)

所以我猜cv::VideoCapture在OpenCV 2.4.2中可能存在类的问题.如何检测问题并解决问题?

编辑

使用摄像机我设法捕获错误消息:

OpenCV Error: Assertion failed (m.dims >= 2) in unknown function, file ..\..\..\
src\opencv\modules\core\src\matrix.cpp, line 268
OpenCV Error: Assertion failed (0 <= _rowRange.start && _rowRange.start <= _rowR
ange.end && _rowRange.end <= m.rows) in unknown function, file ..\..\..\src\open
cv\modules\core\src\matrix.cpp, line 283
Run Code Online (Sandbox Code Playgroud)

cou*_*nt0 4

您是否检查捕获是否确实打开了文件/相机?

    if(_video.isOpened()) {  // check if capture succeeded
      // do stuff
    }
Run Code Online (Sandbox Code Playgroud)

默认情况下并非支持所有编解码器。这取决于您在下面用于打开视频的库。(这可能是 ffmpeg 或 Quicktime)。

您也可以自己捕获异常,以防万一以后出现问题

try {
    _video >> frame;
} catch (cv::Exception) {
    cout << "An exception has accurred" << endl;
};
Run Code Online (Sandbox Code Playgroud)