主要内容

在循环中获取单个图像

此示例显示了如何使用getNapshot函数。getNapshot功能允许快速获取单个视频框架。

设置采集对象

与图像采集工具箱的大多数交互是通过视频输入对象完成的。这些对象是使用Videoinput命令创建的。该示例使用通过工具箱的“ Winvideo”适配器访问的网络摄像头。

vidobj = videoinput('Winvideo');

获取框架

要获取单个帧,请使用getNapshot函数。

快照= getsNapShot(vidobj);%在图形窗口中显示框架。imagsc(快照)

获取多个帧

一个常见的任务是重复获取单个图像,对其进行处理,然后存储结果。为此,可以在循环中调用getNapshot。

为了i = 1:5快照= getsNapShot(vidobj);imagesc(快照);结尾

时间含义

getNapshot函数在调用时会执行很多工作。它必须连接到设备,配置它,启动采集,获取一帧,停止采集,然后关闭设备。这意味着,根据相机的框架速率,一帧的采集可能要比预期的要长得多。为了说明这一点,请在循环中调用get getnapshot。

%测量获取20帧的时间。抽动为了i = 1:20 snapshot = getsNapShot(vidobj);结尾ELAPSEDTIME = TOC%计算每个帧的时间和有效帧速率。TimePerFrame = ElapsedTime/20有效Framerate = 1/TimePerframe
ElapsedTime = 21.2434 TimePerframe = 1.0622有效framerate = 0.9415

下一个示例说明了执行循环的更有效的方法。

使用手动触发模式

您可以使用Videoinput对象的手动触发模式避免在上一个设置中描述的getNapshot的开销。手动触发模式允许工具箱连接和配置设备,而无需将数据记录到内存。这意味着可以将框架返回到MATLAB®的情况下延迟较小。

%为手动触发模式配置对象。triggerConfig(vidobj,'手动的');现在,该设备已配置为手动触发,请呼叫启动。%这会导致该设备将数据发送回MATLAB,但不会记录在这一点上,%帧到内存。开始(vidobj)%测量获取20帧的时间。抽动为了i = 1:20 snapshot = getsNapShot(vidobj);结尾ELAPSEDTIME = TOC%计算每个帧的时间和有效帧速率。TimePerFrame = ElapsedTime/20有效Framerate = 1/TimePerframe%调用停止功能以停止设备。停止(vidobj)
ELAPSEDTIME = 1.4811 TimePerframe = 0.0741有效Framerate = 13.5031

您可以看到,使用手动触发的经过的时间比上一个示例小得多。

清理

一旦不再需要视频输入对象,请删除关联的变量。

删除(vidobj)