2012-07-11 60 views
0

我正在運行代碼來提取電影上的光流,並且我想在電影的所有幀上運行它。但是,當我使用爲什麼Windows 7 64位機器上的cvGetCaptureProperty(video,CV_CAP_PROP_POS_FRAMES)返回0?

number_of_frames = (int) cvGetCaptureProperty(input_video, CV_CAP_PROP_POS_FRAMES); 

number_of_frames出來是0;我的代碼片段如下:

CvCapture *input_video = cvCaptureFromFile("C:\\Movies\\WESTWARD_HO.avi"); 
long number_of_frames; 
cvSetCaptureProperty(input_video, CV_CAP_PROP_POS_AVI_RATIO, 1.); 
number_of_frames = (int) cvGetCaptureProperty(input_video, CV_CAP_PROP_POS_FRAMES); 

我正在使用Visual Studio 2008與OpenCv 2.1。我知道它的老,但我必須使用它來與項目的其他部分向後兼容。提前致謝 !!

回答

1

OpenCV中存在大量與此參數相關的錯誤。目前,OpenCV對它沒有很好的支持,雖然在最新版本中有很大改進。由於視頻格式,編解碼器,後端等的數量龐大,因此很難使其工作在每一個環節。

如果您確實需要它,請嘗試以其他格式轉換您的視頻。有機會,你會用不同的編解碼器獲得更好的結果。另外,安裝更多的編解碼器helps sometimes

下面是關於CV_CAP_POS_FRAMES一個相關的問題: Reverse video playback in OpenCV

而且,最重要的是,更新你的OpenCV 2.4.2。使用2.1讓我想起喬治華盛頓簽署的獨立宣言......

+0

感謝您的澄清!我想最好的辦法是避免使用它。改爲2.4並不是真的在我手中,但我會建議我的主管 – Random 2012-07-11 12:31:45

+0

也許最好的辦法是在本地嘗試2.4,如果它能正常工作,您有充足的理由提出正式更新。 – Sam 2012-07-11 12:47:11

-1

您正在將double值從0-1轉換爲int - 這就是爲什麼你得到0 ... 如果你想要總幀數使用CV_CAP_PROP_FRAME_COUNT ...

相關問題