我刚刚安装了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
答案 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;
};