2009-09-23 88 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留下了一個答案,其中列出了實現這一點的方法。