opencv获取视频总帧数的问题

今天编程时发现,通过capture.get(CV_CAP_PROP_FRAME_COUNT)获得的总帧数总是和实际的总帧数差1.
实验中总帧数是通过capture.get(CV_CAP_PROP_FRAME_COUNT)获得的,128帧,我通过capture.set(CV_CAP_PROP_POS_FRAMES,127)将指针指到127帧,再用capture.read读居然读不到。
后来就用下面代码测试了一下。
int i=0;
while(1){
if(!capture.read(img))break;
i++;

最后发现i为127,真的少一帧。求问capture.get(CV_CAP_PROP_FRAME_COUNT)获得帧数是比实际帧数多1吗?

qq_22440089
浩劫重生 回复浩劫重生: https://www.cnblogs.com/dwdxdy/archive/2012/06/04/2534733.html
4 个月之前 回复
qq_22440089
浩劫重生 我大概搜了一下,可能的原因是opencv是用ffmpeg读取视频,读到的是关键帧
4 个月之前 回复
qq_22440089
浩劫重生 我的有些视频有的多了几百帧,最后一个可以读到图片的CAP_PROP_POS_FRAMES是2385,CAP_PROP_FRAME_COUNT是2835
4 个月之前 回复

2个回答

原因是opencv是用ffmpeg读取视频,读到的是关键帧,压缩过后的视频中间有很多的过渡帧
https://stackoverflow.com/questions/19404245/opencv-videocapture-set-cv-cap-prop-pos-frames-not-working

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!