主要内容

使用非连续采集创建延时视频

这个例子展示了如何在不使用采集的所有帧的情况下创建一个延时视频。

图像采集工具箱™可以轻松地生成延时视频。进行延时采集最有效的方法是使用图像采集工具箱的内置功能,直接将帧记录到AVI文件中,并通过仅保留摄像机获取的所有帧的一小部分来执行时间抽取。

看一天的长时间推移序列.(21秒)

创建一个视频输入对象

在使用图像采集工具箱获取图像之前,创建视频输入对象。

%当执行以下代码时,您可能需要%修改它以匹配您获得的硬件。vid = videoinput (“winvideo”,1,“RGB24_352x288”);

确定帧速率

大多数设备不允许你控制它们的帧率。最好是通过获取帧并分析帧的时间戳来实验确定帧率。

从视频。FramesPerTrigger = 100;开始(vid);等待(vid、正);%获取每一帧的帧和时间戳。numframes = vid.FramesAvailable;(框架、时间)= getdata(请看numframes);%通过取平均差来计算帧率%在每个帧的时间戳之间。帧速率=平均(1. / diff(时间))
帧速率= 17.5296

指定非连续获取

FrameGrabInterval属性指定从视频流存储帧的频率。例如,如果我们将它设置为5,那么5帧中只有1帧被保留——其他4帧将被丢弃。

我们想把30秒压缩成3秒,所以%只获得每10帧。从视频。FrameGrabInterval = 10;

确定要获取的帧数

为了确定总共需要获取多少帧,计算在设备的帧速率下需要获取的帧总数,然后除以FrameGrabInterval

capturetime = 30;间隔= vid.FrameGrabInterval;Numframes = floor(capturetime *帧速率/间隔)
numframes = 52
从视频。FramesPerTrigger = numframes;

配置AVI磁盘日志

由于将获得大量的帧,将图像记录到磁盘而不是内存更实用。使用图像采集工具箱,您可以直接将图像记录到AVI文件。的配置LoggingMode财产。

从视频。LoggingMode =“磁盘”

属性创建要登录到的VideoWriter对象VideoWriter命令。我们必须指定要使用的文件名,然后设置AVI文件回放的帧速率。然后,设置DiskLogger属性将视频输入对象设置为VideoWriter对象。

vwObj = VideoWriter (“timelapsevideo”未压缩的AVI的);vwObj。帧速率=帧速率;从视频。DiskLogger = vwObj;从视频
使用“罗技QuickCam融合”的视频输入对象概述。获取来源:input1可用。获取参数:'input1'是当前选择的源。使用选定的源,每个触发器91帧。'RGB24_352x288'视频数据将被记录在START。每10帧抓取第一个帧。在触发器上记录数据到'磁盘'。触发器参数:START上的1个“immediate”触发器。状态:等待启动。开始后获得100帧。 0 frames available for GETDATA.

执行延时采集

启动延时采集,等待采集完成。注意,图像采集工具箱在获取时不会占用MATLAB®。您可以开始采集并在MATLAB中继续工作。

开始(vid);%等待捕获完成后再继续。等待(vid、正);

关闭AVI文件

捕获完成后,检索AVI文件对象,并使用关闭函数释放与其关联的资源。

vwObj = vid.DiskLogger;关闭(vwObj);

回放延时AVI序列

要回放延时AVI序列,右键单击MATLAB当前文件夹浏览器中的文件名,并从上下文菜单中选择Open Outside MATLAB。

清理

当你完成视频输入对象时,你应该使用删除函数释放与之关联的硬件资源,并使用清晰的函数。

删除(vid);清晰的从视频