数据记录到内存

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

预览数据

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

%访问图像采集装置。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)结束
%停止收购。停止(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