问题说明:
OpenCV 2.X 版本中,调用cvCaptureProperty()定位视频到指定帧,采用下面两种方法都会出现定位不准的问题。
cvSetCaptureProperty( capture, CV_CAP_PROP_POS_AVI_RATIO, t)
或
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, t);
都会显示诸如此类的错误警告信息:
HIGHGUI ERROR: AVI: could not seek to position 2.701
其中黄色数字就是OpenCV函数中对应的帧数,不知道因为什么原因,变成非整数,与之前程序中指定的帧数不一致,导致无法定位到准确的位置。
之前用OpenCV 2.2版本,一样出现相同的问题。而使用OpenCV 1.1版本,就可以正常定位。
更详细的问题说明:
很多人都遇到这个问题,更详细的实验可以参见下面文章:
《设定cvSetCaptureProperty后取帧不准的问题》
作者实验中使用的测试代码如下:
#inclu

OpenCV 2.3.1中使用cvCaptureProperty()进行视频帧定位时常出现不准的问题,表现为无法到达指定帧数。问题源于OpenCV 2.0之后使用ffmpeg而非vfw采集视频,av_seek_frame()函数默认寻找关键帧。通过将寻求标志由0改为AVSEEK_FLAG_ANY,可以解决定位不准的问题。在opencv2.3.1的cap_ffmpeg_impl.hpp文件中修改setProperty函数可实现这一改动。
最低0.47元/天 解锁文章
7199

被折叠的 条评论
为什么被折叠?



