close all;
clear all;
%****************** préparation de l'acquisition ***********************

%Le code suivant permet de détecter le matériel d'acquisition disponible et
%d'afficher ses caractéristiques (formats vidéo, branchement, ...)
%Ceci est pris en charge par la toolbox "Image Acquisition" de Matlab

%Pour réaliser l'acquisition, il faut d'abord communiquer avec l'appareil
%d'acquisition d'images. 
%Pour cela Matlab possède des interfaces permettant d'accéder aux appareils 
%d'acquisition : ce sont des logiciels que Matlab utilise pour
%communiquer avec l'appareil d'acquisition. 
%Pour savoir quels sont les interfaces à disposition, on utilise cette fonction :
imaqhwinfo  
pause;

%Dans la suite, on utilisera l'interface 'winvideo' pour accéder à la webcam
%Pour avoir plus d'informations sur l'interface et sur l'appareil d'acquisition (notamment
%les formats vidéo qu'il supporte), on tape ceci :

info=imaqhwinfo('winvideo')  %informations sur l'adaptateur (nombre d'appareils détectés)
pause;
info.DeviceInfo.SupportedFormats   %informations sur les formats supportés
pause;
%Dans la suite, on travaillera avec le format 'RGB24_320x240'

%************************** visualisation ********************************
dev_info = imaqhwinfo('winvideo',1)
vid = videoinput('winvideo',1,'RGB24_320x240');     % l'objet vid représente la connection entre
%Matlab et le système d'acquisition : la webcam
%vu que nous n'avons qu'une webcam branchée, elle portera le numéro d'identification 1 (deviceid)
%on peut changer le format en fonction des formats supportés

triggerconfig(vid, 'Manual');   %déclenchement manuel pour la capture des frames
set(vid,'FramesPerTrigger',1);  %nombre de frames à capturer à chaque fois qu’on lance la fonction "trigger" (ici nb = 1)
set(vid,'TriggerRepeat',Inf);   %on peut utiliser la fonction "trigger" autant de fois que l’on veut

pause;
preview(vid)  %visualisation (dans une fenêtre Matlab) de ce que voit la webcam

%********** capture et stockage d'une image dans un fichier ************
start(vid);  %initialise la capture de frames et stocke les frames en mémoire
pause;

trigger(vid);            %déclenche la capture d’une frame (mise en mémoire de la frame)
im=getdata(vid,1);             %capture d'une frame
figure,imshow(im);              %affichage de la frame capturée dans une fenêtre
imwrite(im,'testimage.jpg');  %enregistrement de la frame comme fichier image (extensions .jpg ou .gif)
% L'image sera stockée dans le répertoire de travail ou si aucun n'a été spécifié dans 'MATLAB/R2009a/work' : à vérifier

pause;
closepreview(vid);  %ferme la fenêtre de visualisation
close all;               %ferme la fenêtre de la frame
