如何使用MATLAB定时获取图像?

3

我是MATLAB的初学者,想知道如何从我的相机中获取并保存20张图像,每5秒一张。非常感谢。

4个回答

6

首先构建一个视频输入接口

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次或更多次)捕获图像,则考虑将网络摄像头作为视频源可能更有用。我已经回答了这个问题(链接)并介绍了实现方法。

1

有几种方法可以解决这个问题,每种方法都有其优缺点。根据您目前发布的信息,以下是我会采取的方法:

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参数以更改将发生多少次采集。

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


1

这里有一个快速教程,介绍如何获取一张图片http://www.mathworks.com/products/imaq/description5.html。你已经成功尝试过了吗?

编辑:

既然你可以获取一张图片,现在你想要获取二十张。你需要一个定时器对象或一个简单的for循环。

简单定时器对象示例

MATLAB中定时器的视频示例

确保将“要执行的任务”字段设置为20。此外,你应该将所有获取一张图片所需的代码封装成一个单独的函数。


我已经让那个工作了。但是只有一张图片。所以现在我正在尝试以5秒的间隔获取20张图片。非常感谢! - Veronica

0

为了获取图像,相机是否有一些文档化的方法可以从计算机上进行控制?MATLAB支持链接到外部库。或者您可以购买适当的MATLAB工具箱,如MatlabDoug所建议的。

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

要重复操作,一个简单的FOR循环和一个PAUSE将为您提供大致想要的结果,而且几乎不需要任何工作:

 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);

我有图像采集工具箱,但我无法配置如何获得所需内容。将尝试您发布的方法。非常感谢! - Veronica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接