主要内容

将数据记录到内存

这个例子展示了如何记录图像数据和查看记录的数据。

预览数据

在记录数据之前,可以使用PREVIEW功能实时预览来自图像采集设备的图像。调用PREVIEW函数,将打开一个预览窗口。要关闭预览窗口,请使用CLOSEPREVIEW函数。

访问图像采集设备。Vidobj = videoinput(“winvideo”1);
打开预览窗口。预览(vidobj)

单帧采集

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

快照= getsnapshot(vidobj);
在图形窗口中显示帧。显示亮度图像(快照)

Multi-Frame收购

要指定触发时要记录的帧数,请配置视频输入对象的FramesPerTrigger属性。

配置触发时记录的帧数。vidobj。FramesPerTrigger = 50;

在记录数据之前,图像采集对象必须正在运行。如果要发起收购,请使用START函数。

开始(vidobj)
注意记录到内存中的帧数…numAvail = vidobj。FramesAvailable
numAvail = 7
%……正在增加……numAvail = vidobj。FramesAvailable
numAvail = 14
%……随着时间的推移。numAvail = vidobj。FramesAvailable
numAvail = 21

要从内存中检索记录的数据,使用GETDATA函数和视频输入对象以及要检索的帧数。

检索一些已记录的帧。imageData = getdata(vidobj, 30);
注意内存中剩余的帧数。numAvail = vidobj。FramesAvailable
numAvail = 20
显示从内存中提取的最后一帧。显示亮度图像(imageData (:,:,: 30))

等待获取完成。%等待(vidobj);

要连续获取数据,请将FramesPerTrigger属性配置为无穷大。触发后,数据将被记录,直到视频输入对象停止运行。要停止一个对象的运行,使用stop函数。

vidobj。FramesPerTrigger = inf;
发起收购。开始(vidobj)注意内存中的帧数。numAvail = vidobj。FramesAvailable
numAvail = 6
%循环直到获得10帧(numAvail<=10) numAvail = vidobj.FramesAvailable;结束
停止采集。停止(vidobj)
查看停止前记录的帧总数。numAcquired = vidobj.FramesAcquired;
numAcquired = 10
检索所有日志数据。imageData = getdata(vidobj, numAcquired);
显示一个记录帧。显示亮度图像(imageData (:,:,:, numAcquired))

查看日志数据。

要查看最近记录的图像数据,而不需要从内存中提取,可以使用PEEKDATA函数和视频输入对象以及要查看的帧数。使用PEEKDATA查看日志数据不会从内存中删除任何日志数据。

配置触发时记录的帧数。vidobj。FramesPerTrigger = 35;
发起收购。开始(vidobj)
等待获取完成。%等待(vidobj 3);
验证记录到内存中的帧数。numAvail = vidobj。FramesAvailable
numAvail = 35
访问记录的数据,而不从内存中提取它们。imageData = peekdata(vidobj, numAvail);
确认所有记录的帧在内存中仍然可用。numFramesAvailable = vidobj。FramesAvailable
numFramesAvailable = 35

当不再需要视频输入对象时,删除并清除相关变量。

删除(vidobj)清晰vidobj