Bonjour,
Nous cherchons à faire une acquisition vidéo en temps réel pour ensuite faire un traitement de cette vidéo.
Nous avons d’abord travaillé avec la boite à outils de MatLab « Image Acquisition Toolbox ». Puis nous avons transféré ces codes dans notre interface.
Nous arrivons à visualiser la vidéo dans un axes. Nous voulons enregistrer la vidéo sur le disque pour la base de données et en mémoire pour travailler dessus (matrice 4-D). Nous arrivons à enregistrer correctement la vidéo en format .avi sur le disque.
Le problème se positionne au niveau de la récupération la vidéo en matrice 4-D. Nous ne récupérons qu’une vidéo avec un nombre de frames correspondant au paramètre FramesPerTrigger défini au préalable, alors que le paramètre TriggerRepeat est défini en infini. (ici vid. FramesPerTrigger = 15, notre vidéo ne contient que les 15 premières frames enregistrées)
Nous utilisons la fonction « getdata » pour récupérer la vidéo (comme dans la toolbox).
Voici notre code (non complet) :
Déclaration des variables :
Fonction principale :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 global handles vid video vid = videoinput('winvideo', 1, 'YUY2_320x240'); vid.ReturnedColorspace = 'rgb'; vid.FramesPerTrigger = 15; vid.TriggerRepeat = Inf; vid.LoggingMode = 'disk&memory';
Code du bouton acquisition :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25%Objet figure handles(1)=figure('units', 'normalized',... 'position',[0.1 0.3 0.7 0.6],... 'color',[0.831 0.816 0.784],... 'numbertitle','off',... 'menubar','none',... 'name','Interface test de repositionnement',... 'tag','interface'); set(gcf, 'DoubleBuffer', 'on'); %Bouton Démarrer acquisition handles(2)=uicontrol('style','pushbutton',... 'units', 'normalized',... 'position',[0.7 0.2 0.14 0.09],... 'string','Démarrer acquisition',... 'callback',@acquisition,... 'tag','acquisition'); %Axe vidéo en temps réel handles(12)=axes('units', 'normalized',... 'position',[0.25 0.15 0.42 0.75],... 'xtick',[],'ytick',[],... 'xticklabel','','yticklabel','',... 'tag','temps_reel');
Merci beaucoup!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21function acquisition(~,~) if strcmp(get(handles(2),'string'),'Démarrer acquisition') % Permet de changer le texte du bouton set(handles(2),'string','Arrêter acquisition') % Permet de définir un nom au fichier .avi enregistré repertoire='C:\Users\Fiona\Documents\MATLAB'; fichier=[get(handles(6),'string'),'_',get(handles(8),'string')]; chemin=fullfile(repertoire,fichier); vid.DiskLogger = avifile(chemin, 'Compression', 'None', 'Quality', 75, 'keyframepersec', 2.14, 'FPS', 15); start(vid); % Enregistrement de la vidéo else set(handles(2),'string','Démarrer acquisition') % Permet de changer le texte du bouton stop(vid); % Stoppe l'enregistrement de la vidéo video = getdata(vid); % Enregistre la vidéo dans une variable globale end end





Répondre avec citation

Partager