将数据记录到内存

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

预览数据

在记录数据之前,可以使用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 = vidobj.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