首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CV_CAP_PROP_POS_FRAMES在cvSetCaptureProperty中获取单个帧

使用CV_CAP_PROP_POS_FRAMES在cvSetCaptureProperty中获取单个帧
EN

Stack Overflow用户
提问于 2012-07-13 11:07:03
回答 5查看 13.4K关注 0票数 13

通过设置CV_CAP_PROP_POS_FRAMES属性,然后按如下方式读取框架,我尝试跳转到特定的框架:

代码语言:javascript
复制
cvSetCaptureProperty( input_video, CV_CAP_PROP_POS_FRAMES, current_frame );
frame = cvQueryFrame( input_video );

我面临的问题是,OpenCV 2.1为current_frame的12个连续值返回相同的帧,而我希望读取每个单独的帧,而不仅仅是关键帧。有人能告诉我怎么了吗?

我做了一些研究,发现问题是由解压缩算法引起的。

MPEG类算法(包括HD、et )不分别压缩每个帧,而是不时保存一个关键帧,然后只保存最后一个帧和后续帧之间的差异。

您报告的问题是,当您选择一个帧时,解码器(可能是ffmpeg)会自动前进到下一个关键帧。

有办法绕过这件事吗?我不想只需要关键帧,而是每个单独的框架。

EN

回答 5

Stack Overflow用户

发布于 2013-05-31 01:33:05

我不知道这对于你的目的是否足够精确,但是我已经成功地达到了MPEG视频中的一个特定点,获得了帧速率,将帧号转换成一个时间,然后推进到了时间。就像这样:

代码语言:javascript
复制
cv::VideoCapture sourceVideo("/some/file/name.mpg");
double frameRate = sourceVideo.get(CV_CAP_PROP_FPS);
double frameTime = 1000.0 * frameNumber / frameRate;
sourceVideo.set(CV_CAP_PROP_POS_MSEC, frameTime);
票数 5
EN

Stack Overflow用户

发布于 2015-08-20 13:54:09

由于OpenCV中的这一限制,使用FFMPEG可能是明智的。运动学是一个很好的包装库。

代码语言:javascript
复制
# Get nth frame from a video
from moviepy.video.io.ffmpeg_reader import FFMPEG_VideoReader
cap = FFMPEG_VideoReader("movie.mov",True)
cap.initialize()
cap.get_frame(n/FPS)

表演也很棒。使用get_frame查找第n帧是O(1),如果(几乎)连续帧被请求,则使用加速。我得到了更好的实时结果加载三个720 p视频同时。

票数 4
EN

Stack Overflow用户

发布于 2013-03-07 15:47:03

CV_CAP_PROP_POS_FRAMES跳转到关键帧。我也遇到了同样的问题,我使用了这个(python-)代码来解决这个问题。它可能不是完全有效,但完成任务:

代码语言:javascript
复制
def seekTo(cap, position):
  positiontoset = position
  pos = -1
  cap.set(cv.CV_CAP_PROP_POS_FRAMES, position)
  while pos < position:
    ret, image = cap.read()
    pos = cap.get(cv.CV_CAP_PROP_POS_FRAMES)
    if pos == position:
      return image
    elif pos > position:
      positiontoset -= 1
      cap.set(cv.CV_CAP_PROP_POS_FRAMES, positiontoset)
      pos = -1
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11469281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档