VideoCapture上的OpenCV2.4.2未处理异常

时间:2012-09-10 13:37:06

标签: opencv cmake

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

1-处理视频中的数据

2-处理模拟数据。

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

问题:应用处理视频崩溃

  

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

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

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

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

修改

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

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

1 个答案:

答案 0 :(得分:4)

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

    if(_video.isOpened()) {  // check if capture succeeded
      // do stuff
    }

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

此外,您可以自己捕捉异常,只是为了安全起见,以便将来出现问题

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