2013-10-26 100 views
0

我想在ubuntu中使用opencv C++播放avi文件,但我沒有輸出。我使用的代碼是一個標準的代碼,我在網上發現,用於播放avi視頻,但我看不到任何輸出。是的,視頻和我的src代碼文件夾在同一個目錄下。我看到的唯一的事情是,在while循環的第一次迭代中,幀是空的,因此中斷。但我不知道爲什麼它發生在視頻正在使用vlc。我非常感謝這裏的一些幫助,因爲我在過去的4-5個小時裏一直堅持下去。 #include「cv.h」//將其包含到使用的Main OpenCV函數中。 #include「highgui.h」//包含它以使用GUI功能。OpenCV - 播放AVI文件

int main(int argc, char** argv) 
{ 
cvNamedWindow("Example3", CV_WINDOW_AUTOSIZE); 

//CvCapture* capture = cvCreateFileCapture("20051210-w50s.flv"); 
CvCapture* capture = cvCreateFileCapture("tree.avi"); 
/* if(!capture) 
    { 
     std::cout <<"Video Not Opened\n"; 
     return -1; 
    }*/ 
IplImage* frame = NULL; 

while(1) { 

    frame = cvQueryFrame(capture); 
    //std::cout << "Inside loop\n"; 
    if (!frame) 
     break; 
    cvShowImage("Example3", frame); 
    char c = cvWaitKey(33); 
    if (c == 27) break; 
} 
cvReleaseCapture(&capture); 
cvDestroyWindow("Example3"); 
std::cout << "Hello!"; 
return 0; 
} 
+0

您的代碼在我的電腦中運行良好。 – Haris

+0

真的嗎?可以用ffmpeg做什麼? – ueg1990

+0

你需要有ffmpeg。它是否安裝在您的系統上?安裝OpenCV時是否安裝?你爲什麼要評論'if(!capture){}'塊?如果它表示無法打開視頻,則可能是文件名錯誤,或者您不支持安裝ffmpeg。 – JonesV

回答

0

你在調試或發佈模式下運行? 在openCV 2.4.4中,只有一個opencv_ffmpeg244.dll(發行版.dll),但沒有一個用於調試。嘗試切換到釋放模式。

0

刪除代碼行:

char c = cvWaitKey(33); 
if (c == 27) break; 

和代替這些,只需添加:

cvWaitKey(33); 

可能,這可能help.Here是Python代碼,這對我來說工作得很好:

import cv 
if __name__ == '__main__': 
    capture = cv.CreateFileCapture('Wildlife.avi') 
    loop = True 
    while(loop): 
    frame = cv.QueryFrame(capture) 
    if (frame == None): 
      break; 
    cv.ShowImage('Wild Life', frame) 
    char = cv.WaitKey(33) 
    if (char != -1): 
     if (ord(char) == 27): 
      loop = False 

this對您有幫助。