2011-08-07 77 views
0
int main() 
    { 
    cvNamedWindow("Example2", CV_WINDOW_AUTOSIZE); 
    CvCapture* capture = cvCaptureFromAVI("a.avi"); 
    IplImage* frame; 

    if(!capture) 
    { 
     printf("fail"); 
    } 
    else 
    { 

    while(1) 
    { 
    frame = cvQueryFrame(capture); 
    cvShowImage("Example2", frame); 
    char c = cvWaitKey(40); 
    if(c == 27) break; 
    } 
    cvReleaseCapture(&capture); 
    cvDestroyWindow("Example2"); 
    } 
    return 0; 
    } 

視頻我試圖與開放Cv的幀速率是29幀/秒和幀的寬度爲720和高度爲480的視頻格式是DX50與AVI封裝第一次使用開放CV無法播放avi文件

空白窗口顯示名爲例題肚裏了......

問題是cvcapturefromavi不會返回指針這就是爲什麼失敗不打印

操作系統視窗7

回答

0

我試着在我的電腦上(使用網絡攝像頭而不是使用cvCaptureFromCAM(-1)的文件),並且您的代碼完美工作,這是您應該嘗試的。

  • 文件「a.avi」是不是在你的可執行文件的路徑,也許你應該先使用絕對路徑嘗試類似「C:/MyVideos/a.avi」
  • 我會嘗試使用cvCaptureFromFile()函數而不是cvCaptureFromAVI(),因爲我在API文檔(OpenCV C 2.1)中搜索並找不到任何cvCaptureFromAVI()函數(可能存在但已棄用或未記錄)。

PS:在代碼中存在一個小錯誤,爲什麼在其他{}作用域中使用cvDestroyWindow時,應該在主作用域中創建主窗口中的窗口。

PPS:請縮進代碼是爲了便於閱讀

朱利安更好,

+0

我做了你所說的,使用cvcapturefromfile並提供了絕對路徑,但仍然沒有工作只有空白窗口 –

+0

我使用的是opencv 2.2 –

+0

你可以上傳你的視頻的地方,給我的鏈接? – jmartel

0

我有同樣的問題。據說由於缺少必要的視頻編解碼器而出現問題。推薦使用「Mencoder」來編碼avi文件來使用OpenCV,但它並沒有解決我的問題,我仍然無法使用OpenCV 2.3.1播放avi文件。

我解決了我的問題,通過添加到我的路徑opencv_ffmpeg.dll失蹤。希望它適用於面臨此問題的您和您的人。

0

如果你建立opencv到靜態庫,你會發現bin目錄中仍然有一個dll文件「opencv_ffmpegxxxxx.dll」。即使您將代碼靜態鏈接到opencv,該DLL也是必需的。所以確保系統可以找到這個dll文件。