首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Matlab中跳过帧和检索电影文件

在Matlab中跳过帧和检索电影文件
EN

Stack Overflow用户
提问于 2016-02-11 13:30:43
回答 2查看 1.6K关注 0票数 2

我试图在Matlab中处理一个我用VideoReader读取的视频。我可以在没有问题的情况下处理这些帧,但我只想每五帧处理一次。我尝试使用step函数,但这在我的视频读取器对象上行不通。现在我可以给readFrame打五次电话,但这显然会减慢整个过程(这是大量的视频材料)。我如何有效地跳过五帧,处理五帧,跳过另五帧,.用Matlab?

错误消息: 对于输入参数“VideoReader”,更高级的未定义函数“step”。

但是,在help上调用step函数可以获得以下示例:

代码语言:javascript
复制
WORKED=step(VR,DELTA)
Moves the frame counter by DELTA frames for video VR.  This is a 
generalization of NEXT.  Returns 0 on an unsuccessful step.  Note that 
not all plugins support stepping, especially with negative numbers.  In 
the following example, both IM1 and IM2 should be the same for most 
plugins.
  vr = videoReader(...myurl...);
  if (~next(vr)), error('couldn''t read first frame'); end
      im1 = getframe(vr);
  if (~step(vr,-1)), error('could not step back to frame 0'); end
      im2 = getframe(vr);
  if (any(im1 ~= im2)), 
      error('first frame and frame 0 are not the same'); 
  end
  vr = close(vr);
FNUM should be an integer.

After the videoReader constructor is called, NEXT, SEEK, or step should
be called at least once before GETFRAME is called. 

在这里,step显然是在VideoReader对象上调用的,不是吗?我们将非常感谢您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-11 17:34:39

我也有过这个问题。在不使用不推荐的代码的情况下,您尝试的唯一方法是对每个输出帧调用readFrame 5次。这是缓慢和非常低效的。但是,如果使用不推荐的read方法(假设视频是文件而不是流),也可以指定帧号。我不知道为什么MathWorks会在这个问题上倒退。我建议您使用提交服务请求来询问它,并说明为什么这个功能对您很重要。

同时,您可以尝试我的frame2jpg函数,该函数从视频文件中提取特定的帧。它尝试使用不推荐的read方法,如果失败,则返回到readFrame。我发现在我自己的应用程序中,read方法的速度是1080 p 60 fps MPEG-4视频的10倍。请随意修改代码以满足您的需要。

票数 4
EN

Stack Overflow用户

发布于 2019-01-30 14:45:19

不知道这是否还有用,但我找到了解决这个问题的方法。

当readFrame读取由vid.CurrentTime属性提供的当前帧时,您可以简单地按要跳过的帧数量来推进该属性。

代码语言:javascript
复制
vid = VideoReader('myvid.mpeg')
vidFig = figure();
currAxes = axes;

n = 10;

while hasFrame(vid) 
vidFrame = readFrame(vid);
vid.CurrentTime = vid.CurrentTime + n/vid.FrameRate; 
image(vidFrame, 'Parent', currAxes);
currAxes.Visible = 'off';
end

改变n的值使视频跳过每一个循环的帧数。希望这能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35340695

复制
相关文章

相似问题

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