2012-06-12 54 views
0

我要運行這個非常簡單的鱈魚,這將在Visual Studio和OpenCV庫被編譯在使用。Exection在cvQueryFrame在Visual Studio 2010

#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. 

我怎樣才能解決這個PROBL他們? 謝謝!

+0

@karlphillip〜> :) – saeed

+0

回答,好運氣。 – karlphillip

回答

1

cvQueryFrame()崩潰,因爲cvCaptureFromFile()可能會失敗。當無法打開/查找文件或OpenCV不支持視頻的容器/編解碼器時會發生這種情況。

每當一個函數返回的東西是很好的做法,以測試返回什麼有效性,在這種情況下,因爲它是一個指針,你應該做的:

CvCapture *capture=cvCaptureFromFile("sample_1.avi"); 
if (!capture) // same as: if (capture == NULL) 
{ 
    // print error message and abort execution 
}