2011-09-22 32 views
0

我試圖用 OpenCV處理大型AVI文件(大約61000幀,505MB),使用cvCaptureFromAVI()cvQueryFrame()cvQueryFrame()在文件結尾之前返回NULL

但是,cvQueryFrame()在到達avi的最後一幀 之前返回NULL指針。

long int numframe = 6000; 
while (numframe < 67000) 
{   
    frame = cvQueryFrame(capture); 
    if (! frame) 
    { 
     fprintf(stderr, "could not query the frame %ld.\n", numframe); 
     break; 
    } 

    char namefile[250]; 
    sprintf(namefile, "/media/6E86F8CB03A4DFA4/image-sequence/%ld.jpg", numframe); 
    cvSaveImage(namefile, frame); // save frame as a image 

    numframe++; 
} 

是否有其他人有過同樣的問題,並找到解決辦法? 有什麼我可以做的嗎?

回答

1

很可能你遇到過FFMPEG集成bug之一。 This bugreport看起來與您的問題非常相似。

你使用的是什麼版本的OpenCV?

無論如何,我建議你:

  1. 嘗試OpenCV的

    的另一個版本
  2. 嘗試建立OpenCV的無FFMPEG。很可能OpenCV將能夠使用VfW或GStreamer讀取您的文件。

+0

我正在使用OpenCV 2.3.1。 這與報道的問題完全相同。我會嘗試OpenCV 2.2,因爲他在錯誤報告中說過他經歷過2.3,2.3.1和2.3.2的問題,但與OpenCV 2.2不同。 謝謝你的回答! – Yamaneko