0

我将运行这个非常简单的代码,它将在 Visual Studio 中编译并使用 opencv 库。

 #include <opencv2/opencv.hpp>

int main()
{
    CvCapture *capture=cvCaptureFromFile("sample_1.avi");
    IplImage *FirstFrame=cvQueryFrame(capture);
    cvShowImage("first",FirstFrame);
    cvWaitKey();
}

编译过程正常但是当调试器到达

IplImage *FirstFrame=cvQueryFrame(capture);

发生以下异常:

Unhandled exception at 0x715f6a7e in VideoTest.exe: 0xC0000005: Access violation reading location 0x01bc4000.

我该如何解决这个问题?谢谢!

4

1 回答 1

1

cvQueryFrame()崩溃,因为cvCaptureFromFile()可能失败。当它无法打开/找到文件或 OpenCV 不支持视频的容器/编解码器时,就会发生这种情况。

每当函数返回某些内容时,测试返回内容的有效性是一种很好的做法,在这种情况下,因为它是一个指针,您应该这样做:

CvCapture *capture=cvCaptureFromFile("sample_1.avi");
if (!capture)  // same as: if (capture == NULL)
{
  // print error message and abort execution
}
于 2012-06-13T23:59:13.737 回答