繁体   English   中英

如何使用MATLAB定时采集图像?

[英]How do I Acquire Images at Timed Intervals using MATLAB?

我是MATLAB的初学者,我想知道如何以5秒的间隔从相机获取和保存20张图像。 非常感谢你。

首先构造一个视频输入界面

vid = videoinput('winvideo',1,'RGB24_400x300');

您需要调整网络摄像头的最后一位。 要查找网络摄像头设备列表(以及其他内容),请使用:

imaqhwinfo

下面将第一个网络摄像头变成一个对象

a=imaqhwinfo('winvideo',1)

查找支持的视频格式列表

a.SupportedFormats

然后,您将要启动界面:

start(vid);
preview(vid);

现在,您可以执行以下操作:

pics=cell(1,20)
for i=1:20
   pause(5);
   pics{i}=getsnapshot(vid);
end

或者,正如其他评论者所指出的,您还可以使用Matlab计时器作为间隔。

如果您希望以相当短的间隔(每秒1个或更多)捕获图像,则将网络摄像头视为视频源可能会更有用。 我已经回答了这个问题 ,其中列出了实现该问题的方法。

这是有关获取一张图像的快速教程, 网址为http://www.mathworks.com/products/imaq/description5.html

编辑:

现在您可以得到一张图像,您想要得到二十张。 您将需要一个计时器对象或一个简单的for循环。

简单的计时器对象示例

MATLAB中计时器的视频示例

确保将“要执行的任务”字段设置为二十。 同样,您应该将一张图片捕捉的所有代码包装到一个函数中。

有几种解决方法,每种都有优点和缺点。 根据您到目前为止发布的信息,以下是我的处理方法:

vid = videoinput('dcam', 1'); % Change for your hardware of course.
vid.FramesPerTrigger = 20;
vid.TriggerRepeat = inf;
triggerconfig(vid, 'manual');
vid.TimerFcn = 'trigger(vid)';
vid.TimerPeriod = 5;
start(vid);

这将每五秒钟获取20张图像,直到您调用STOP。 您可以更改TriggerRepeat参数以更改采集发生的次数。

显然,在获取图像后,不会对图像进行任何处理。

要获取图像,相机是否具有某种记录的方法可以从计算机进行控制? MATLAB支持链接到外部库 或者,您可以按照MatlabDoug的建议购买合适的MATLAB工具箱。

要保存图像, IMWRITE可能是最简单的选择。

要重复该操作,只需执行一个带有暂停的简单FOR循环,只需很少的工作即可大致获得所需的内容:

 for ctr = 1:20
   img = AcquireImage(); % your function goes here
   fname = ['Image' num2str(ctr)]; % make a file name
   imwrite(img, fname, 'TIFF');
   pause(5); % or whatever number suits your needs
 end

但是,如果需要精确的5秒间隔,则必须深入TIMER 这是一个简单的例子:

function AcquireAndSave
  persistent FileNum;
  if isempty(FileNum)
    FileNum = 1;
  end
  img = AcquireImage();
  fname = ['Image' num2str(FileNum)];
  imwrite(img, fname, 'TIFF');
  disp(['Just saved image ' fname]);
  FileNum = FileNum + 1;
end

>> t = timer('TimerFcn', 'ShowTime', 'Period', 5.0, 'ExecutionMode', 'fixedRate');
>> start(t); 
...you should see the disp line from AcquireAndSave repeat every 5 seconds...
>> stop(t);
>> delete(t);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM