2012-03-03 89 views
1

我正在使用OpenCV對AVI文件進行一些處理。除了原始視頻中只有一小部分幀被捕捉的事實之外,一切正常。OpenCV僅捕獲視頻文件中的一小部分幀

這裏是我的代碼的摘錄:

capture=cvCaptureFromAVI(PATH_TO_VIDEO); 
int fps=(int) cvGetCaptureProperty(capture,CV_CAP_PROP_FPS); 
int frames=(int) cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT); 
qDebug("%d frames at %d fps",frames,fps); 
int framesSaved=0; 

while(1) { 
    frame=cvQueryFrame(capture); 
    if(!frame) break; 

    framesSaved++; 
    data = (uchar *)frame->imageData; 
    //PROCESSING 
    cvWriteFrame(writer,frame); 
} 

cvReleaseVideoWriter(&writer); 
qDebug("VIDEO SAVED: %d frames",framesSaved); 

輸出:

1948 frames at 50 fps 
VIDEO SAVED: 105 frames 

任何想法,問題可能是什麼?

感謝

回答

7

OpenCV的VideoCapture已知有嚴重的問題,報告框架的正確數量與CV_CAP_PROP_FRAME_COUNT

好消息是,在OpenCV的傢伙正在努力解決它的下一個版本。

+0

在這種情況下幀數是正確的。視頻輸入視頻長約20秒。 – Osiris 2012-03-04 03:40:30

+0

OpenCV讀取較少幀的機會非常非常低。讀錯號碼的機會非常高。您可以使用其他視頻捕獲後端(Windows Media或Quick time)對其進行測試,以查看幀數是否不同。 – Sam 2012-03-04 07:49:10

+4

這個固定了嗎? – madman2890 2013-05-30 13:22:43