为什么cvGetCaptureProperty(视频,CV_CAP_PROP_POS_FRAMES)在Windows 7 64位机器上返回0?

时间:2012-07-11 09:00:33

标签: opencv video-processing

我正在运行一个代码来提取电影上的光流,我想在电影的所有帧上运行它。但是,当我使用

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。我知道它的旧版本,但我必须使用它来向后兼容项目的其他部分。在此先感谢!!

2 个答案:

答案 0 :(得分:1)

OpenCV中存在大量与此参数相关的错误。目前,OpenCV对它没有很好的支持,尽管在最新版本中它大大改进了。由于视频格式,编解码器,后端等的数量庞大,因此很难使其全部工作。

如果您真的需要它,请尝试以其他格式转换视频。使用不同的编解码器可以获得更好的结果。此外,安装更多编解码器helps sometimes

以下是有关CV_CAP_POS_FRAMES的相关问题: Reverse video playback in OpenCV

最重要的是,将OpenCV更新到2.4.2。使用2.1让我想起乔治华盛顿签署独立宣言的时代......

答案 1 :(得分:-1)

您正在将双倍值从0-1转换为int - 这就是为什么你得到0 ... 如果您想要总帧数,请使用CV_CAP_PROP_FRAME_COUNT ...