Question

Je suis un débutant et je Matlab voudrais savoir comment je peux acquérir et enregistrer 20 images à 5 secondes de mon appareil photo. Merci beaucoup.

Était-ce utile?

La solution

Pour acquérir l'image, fait l'appareil est livré avec une certaine façon documentée pour le contrôler à partir d'un ordinateur? Matlab prend en charge un lien vers bibliothèques en dehors . Vous pouvez également acheter la boîte à outils Matlab approprié tel que suggéré par MatlabDoug.

Pour enregistrer l'image, IMWRITE est probablement l'option la plus simple.

Pour répéter l'action, un simple FOR boucle avec un PAUSE vous donnera à peu près ce que vous voulez avec très peu de travail:

 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

Par contre, si vous avez besoin de 5 secondes exactement, vous devrez plonger dans TIMER s. Voici un exemple simple:

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

Autres conseils

construire d'abord une interface d'entrée vidéo

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

Vous devrez ajuster le dernier bit pour votre webcam. Pour trouver la liste des périphériques webcam (et d'autres choses encore) utiliser:

imaqhwinfo

Ce qui suit fait la première webcam dans un objet

a=imaqhwinfo('winvideo',1)

Trouvez la liste des formats vidéo pris en charge par

a.SupportedFormats

Vous souhaitez ensuite démarrer l'interface:

start(vid);
preview(vid);

Maintenant, vous pouvez faire ce qui suit:

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

Ou, comme d'autres commentateurs l'ont noté, vous pouvez également utiliser une minuterie Matlab pour l'intervalle.

Si vous souhaitez capturer des images avec un intervalle beaucoup plus court (1 ou plus par seconde), il peut être plus utile de considérer la webcam comme source vidéo. J'ai laissé une réponse à cette question qui définit des méthodes pour y parvenir.

Il y a plusieurs façons d'aller à ce sujet, chacun des avantages et des inconvénients. D'après les informations que vous avez posté jusqu'à présent, voici comment je ferais ceci:

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

fera l'acquisition de 20 images toutes les cinq secondes jusqu'à ce que vous appelez STOP. Vous pouvez modifier le paramètre TriggerRepeat pour modifier le nombre de fois l'acquisition aura lieu.

Cela ne signifie évidemment pas fait tout traitement sur les images après leur acquisition.

Voici un rapide tutoriel sur l'obtention d'une image http: //www.mathworks. com / products / IMAQ / description5.html Avez-vous obtenu ce genre de chose à travailler encore?

EDIT:

Maintenant que vous pouvez obtenir une image, vous voulez obtenir vingt. Un objet de minuterie ou d'une simple boucle est ce que vous allez avoir besoin.

exemple simple objet de la minuterie

exemple Vidéo de minuteries dans Matlab

Assurez-vous de définir les « tâches à exécuter » champ à vingt. En outre, vous devez envelopper tout le code que vous avez pour une image composant logiciel enfichable en une seule fonction.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top