2009-09-23 87 views

回答

0

要获取图像,相机是否附带一些记录的方式来从计算机控制它? MATLAB支持连接到outside libraries。或者您可以按照MatlabDoug的建议购买相应的MATLAB工具箱。

要保存图像,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 s。这里有一个简单的例子:

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

我有图像采集工具箱,但我无法配置如何得到我需要的东西。将尝试您发布的方法。非常感谢你! – Veronica 2009-09-24 03:40:22

1

这里是获取一个图像的快速教程http://www.mathworks.com/products/imaq/description5.html你有没有得到这种东西的工作呢?

编辑:

现在,你可以得到一个形象,你想获得二十岁。一个计时器对象或一个简单的for循环就是你所需要的。

Simple timer object example

Video example of timers in MATLAB

一定要设置 “任务,实行” 场到二十。此外,你应该把你有一张图片的所有代码包装到一个函数中。

+0

我得到那个工作。但它只是一个图像。所以现在我试图以5秒的间隔得到20张图片。非常感谢你! – Veronica 2009-09-24 03:34:07

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

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

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

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次或更多)捕获图像,将网络摄像头视为视频源可能更有用。我已经给this question留下了一个答案,其中列出了实现这一点的方法。