本周文件交换选择

我们最好的用户反馈

视频播放器用于基于帧的处理

汪东城他本周的选择是videofig通过若昂戴安娜

如果你对基于框架的可视化感兴趣,这里有一个必须的函数。您可能有想要分析的视频帧,并对每一帧进行一些处理和可视化。一旦所有这些都完成了,你可能希望能够快速浏览帧或将它们视为电影。若昂的videofig让你做到这一点。

内容

设置处理每一帧的函数

你首先要建立一个函数,它可以应用于任何特定的坐标系。这个函数也应该包括任何可视化。下面是一个执行边缘检测并显示来自视频对象的帧的叠加图像的示例。其中一个输入参数必须是帧号。

类型重绘
function redraw(frame, vidObj) % redraw处理视频的特定帧% redraw(frame, vidObj) %帧-帧号来处理% vidObj - VideoReader对象%读取帧f = vidObj. Read (frame);% Get edge f2 = edge(rgb2gray(f), 'canny');%覆盖边缘在原始图像f3 = bsxfun(@plus, f, uint8(255*f2));%显示图像(f3);轴图像离端

注:功能边缘而且rgb2gray需要图像处理工具箱

设置视频图

videofig接受两个输入参数:

  • 总帧数
  • 函数句柄指向每个帧都应该调用的函数。这个函数应该只接受一个输入参数“帧号”。如果函数接受额外参数,则使用匿名函数如下图所示。

注:“犀牛。avi"是一个随图像处理工具箱一起发布的电影文件。VideoReaderR2010b中是否引入了一个新类来取代mmreader(在R2007b中引入)。如果您使用的是旧版本(pre-R2010b),请替换VideoReadermmreader

视频阅读器(“rhinos.avi”);设置视频图形窗口videofig(请看。NumberOfFrames, @(frm) redraw(frm, vid));显示初始帧重绘(vid);

控制回放

就是这样!现在,您有了一个交互式视频播放器,可以查看帧。如您所见,图形底部有一个滚动条,您可以单击并拖动它。你也可以通过键盘控制视频,比如方向键。

请参阅良好的MATLAB编码实践示例

我还想指出Joao的一些不错的编码实践。

  • 输入参数验证以确保函数的正确操作。他使用断言检查参数条件。我也建议大家看一下inputParser而且validateattributes为了这个目的。
  • 嵌套函数管理数据。当您希望在用户与工具交互时更改状态时,这些特性特别有用。
  • 计时器对象来控制视频的播放。我发现计时器(而不是循环)对动画/回放应用程序更有用,因为我可以通过停止计时器轻松地停止动画。
  • 函数处理对于重绘函数。这是提供函数作为输入的建议方法,而不是传入函数名的字符串。罗兰有很多关于她的有用帖子博客

评论

让我们知道你的想法在这里或者留下评论若昂。




使用MATLAB®7.11发布

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。

Baidu
map