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 に答える