Domanda

Sono un principiante MATLAB e vorrei sapere come posso acquisire e salvare 20 immagini ad intervalli di 5 secondi dalla mia macchina fotografica. Grazie mille.

È stato utile?

Soluzione

Per acquisire l'immagine, fa la fotocamera è dotata di un certo modo documentato per controllarlo da un computer? MATLAB supporta il collegamento a librerie di fuori . Oppure si può acquistare il toolbox MATLAB appropriata come suggerito da MatlabDoug.

Per salvare l'immagine, imwrite è probabilmente l'opzione più semplice.

Per ripetere l'azione, un semplice PER ciclo con un rel="nofollow PAUSA vi darà più o meno ciò che si vuole con poco lavoro:

 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

Se, tuttavia, è necessario esatte intervalli di 5 secondi, si dovrà tuffarsi in TIMER s. Ecco un semplice esempio:

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

Altri suggerimenti

Prima di costruire un'interfaccia di ingresso video

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

È necessario modificare l'ultimo pezzo per la vostra webcam. Per trovare un elenco di dispositivi webcam (e altre cose oltre) utilizzare:

imaqhwinfo

Quanto segue fa la prima webcam in un oggetto

a=imaqhwinfo('winvideo',1)

Trova l'elenco dei formati video supportati con

a.SupportedFormats

Potrai poi desidera avviare l'interfaccia:

start(vid);
preview(vid);

Ora è possibile effettuare le seguenti operazioni:

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

O, come altri commentatori hanno notato, si potrebbe anche utilizzare un timer Matlab per l'intervallo.

Se si desidera catturare immagini con un intervallo molto più breve (1 o più al secondo), può essere più utile considerare la webcam come sorgente video. Ho lasciato una risposta a questo domanda che definisce le modalità per il raggiungimento di questo.

Ci sono diversi modi per andare su questo, ciascuno con vantaggi e svantaggi. Sulla base delle informazioni che hai postato finora, ecco come farei questo:

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

Questa acquisirà 20 immagini ogni cinque secondi fino a quando si chiama STOP. È possibile modificare il parametro TriggerRepeat di cambiare quante volte si verificherà acquisizione.

Questo, ovviamente, non fa alcuna elaborazione sulle immagini dopo che sono state acquisite.

Ecco un breve tutorial su come ottenere un http: //www.mathworks. com / prodotti / IMAQ / description5.html avete ottenuto questo genere di cose a lavorare ancora?

Modifica

Ora che si può ottenere un'immagine, si desidera ottenere venti. Un oggetto timer o un semplice ciclo for è quello che si sta per necessità.

semplice oggetto esempio timer

esempio video di timer in MATLAB

Assicurarsi di impostare i "compiti da eseguire" campo a venti. Inoltre, si dovrebbe spostare in su tutto il codice che avete per una foto scattare in una singola funzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top