主要内容

以固定的时间间隔记录数据

这个例子展示了如何每隔一段时间记录数据,而不是记录整个采集过程。

在某些应用程序中,可能没有必要记录图像采集设备提供的每一帧。事实上,在特定的时间间隔记录帧可能更实用和更机智。

要以固定的间隔记录帧,请配置视频输入对象的FrameGrabInterval属性。将属性配置为整数值N指定从第一帧开始,每记录第N帧。

注意,指定FrameGrabInterval值并不会修改设备提供帧的速率(设备帧速率)。它只指定记录帧的时间间隔。

步骤1:接入并配置设备

创建一个视频输入对象并配置所需的记录间隔。日志记录间隔由FrameGrabInterval属性的值决定。

访问图像采集设备。Vidobj = videoinput(“winvideo”1);配置要记录的帧数。framesToLog = 9;vidobj。FramesPerTrigger = framesToLog;配置日志记录时间间隔。这指明了%每10帧由设备提供记录。grabInterval = 10;vidobj。FrameGrabInterval = grabInterval;%访问设备的视频源,配置设备的帧速率。% FrameRate是一个设备特定的属性,因此,它可能不被支持%某些设备。frameRate = 30;SRC = getselectedsource(vidobj);src。FrameRate = num2str(FrameRate);

步骤2:记录和检索数据。

开始获取图像并检索记录的帧及其时间戳。

开始采集。开始(vidobj)等待采集结束。等待(vidobj 10)检索数据。[frames, timeStamp] = getdata(vidobj);

步骤3:计算帧间的时间差。

知道了设备的实际帧速率和记录帧的抓取间隔,就可以计算每秒记录的帧数。

每秒记录的帧数。loggedPerSec = frameRate/grabInterval
loggedPerSec = 3

知道每秒记录的帧数,就可以计算和比较每个记录帧之间的预期时间间隔。

每个记录帧之间的预期秒数。logggingrate = 1/loggedPerSec .日志含义
loggingRate = 0.3333
%每个记录帧之间的实际时间差。注意帧记录在一个固定的时间间隔内。diff(时间戳”)
Ans = 0.3332 0.3338 0.3331 0.3332 0.3330 0.3332 0.3331 0.3330
确定帧间的平均时间差。avgDiff = mean(diff(timeStamp'))
avgDiff = 0.3332
percentError = (abs(loggingrat - avgdiff)) * 100
percentError = 0.0125
当视频输入对象不再需要时,删除% it,并将其从工作空间中清除。删除(vidobj)清晰vidobj
Baidu
map