主要内容

将数据记录到内存

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

预览数据

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

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

单帧采集

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

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

多帧采集

要指定触发时要记录的帧数,请配置视频输入对象的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 =正;
%发起收购。开始(vidobj)注意内存中的帧数。numAvail = vidobj。FramesAvailable
numAvail = 6
%循环直到获得10帧(numAvail<=10) numAvail = vidobject . framesavailable;结束
%停止收购。停止(vidobj)
%查看在停止之前记录的帧总数。numAcquired = vidobj.FramesAcquired;
numAcquired = 10
%检索所有记录的数据。imageData = getdata(vidobj, numAcquired);
%显示一个已记录的帧。imagesc(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