2010-07-15 107 views
3

我似乎無法使用OpenCV播放我的avi文件。我在Mac上,這些文件與Quicktime和VLC播放器一起使用。我曾嘗試使用mencoder將其轉換爲i420,但仍然沒有成功。沒有錯誤信息發生,它似乎像程序自動關閉,我不知道如何調試它。在OpenCV中播放AVI文件

int main(int argc, char* argv[]) 
{ 
    cvNamedWindow("Example2", CV_WINDOW_AUTOSIZE); 
    CvCapture* capture = cvCreateFileCapture(argv[1]); 
    IplImage* frame; 
    while(1) { 
     frame = cvQueryFrame(capture); 
     if(!frame) break; 
     cvShowImage("Example2", frame); 
     char c = cvWaitKey(33); 
     if(c == 27) break; 
    } 
    cvReleaseCapture(&capture); 
    cvDestroyWindow("Example2"); 
} 
+0

當你在調試器中檢查它時,它在哪裏放棄? – egrunin 2010-07-15 03:35:31

+0

它不說一件事。它只是正常退出。 – Tereno 2010-07-15 14:30:38

+0

您確定您作爲命令行參數提供的文件名是否正確? 嘗試添加一個檢查以確保該文件實際存在。如果沒有,則產生錯誤。 – 2010-07-16 00:43:34

回答

0

好吧,既然你的代碼沒有錯誤檢查,也許有一個與cvCreateFileCapture()的一個問題,你永遠不會知道,直到你檢查函數的返回。

無論如何,您應該刪除或添加調試對於這一說法在這裏:

if(!frame) break; 

Becouse如果有檢索文件的第一幀的一個問題,您的應用程序會乾脆放棄,默默地退出,給你「沒有任何事」的感覺。

將其改爲類似:

if (!frame) { printf("Uow, huge fail!\n"); break;} 

但最重要的是:你爲什麼不使用cvCaptureFromAVI()? 查看結果:http://nashruddin.com/How_to_Play_AVI_Files_with_OpenCV

+0

我也嘗試過這個方法,但是我一定會把調試信息放在裏面去看看。謝謝! – Tereno 2010-07-17 03:24:22

+0

我遇到了同樣的問題。第一幀未被正確檢索。但是,我使用教科書提供的test.avi和tree.avi文件進行測試。這裏有什麼問題? – John 2011-05-31 13:00:38

+0

我不知道@卡拉。我將不得不看到你的源代碼。許多事情可能是錯的。提出問題,然後留下我的名字評論,以便我可以關注你。 – karlphillip 2011-05-31 13:12:30