IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Discussion :

Acquisition d'une vidéo en temps réel


Sujet :

Interfaces Graphiques

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut Acquisition d'une vidéo en temps réel
    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 :

    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';
    Fonction principale :

    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');
    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
    function 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
    Merci beaucoup!!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    As-tu regardé la documentation de la fonction GETDATA?
    Citation Envoyé par doc getdata
    data = getdata(obj) returns data, which contains the number of frames specified in the FramesPerTrigger property of the video input object obj.

    data = getdata(obj,n) returns n frames of data associated with the video input object obj.
    Ainsi que les propriétés de ton objet Videoinput? get(vid) ('FramesAcquired' et 'FramesAvailable' en particulier)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Par défaut
    J'avais déjà lu l'aide de getdata mais ça ne m'avait pas sauté aux yeux!
    Merci beaucoup ça marche nikel! j'ai juste du ajouter une ligne avant le getdata.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    n = vid.FramesAcquired;
    laser = getdata(vid,n); % Enregistre la vidéo dans une variable globale
    Merci merci!! ça nous cassait vraiment la tête!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/11/2014, 21h08
  2. [Débutant] Acquisition d'une vidéo (en temps réel) via webcam
    Par WhiteTigerZ dans le forum Images
    Réponses: 2
    Dernier message: 12/03/2011, 00h49
  3. [FLASH MX2004] Tracer une ligne en temps réel
    Par tomtom- dans le forum Flash
    Réponses: 1
    Dernier message: 16/02/2006, 10h52
  4. insertion d'un objet 3D dans une video en temps réel
    Par chabfive dans le forum OpenGL
    Réponses: 5
    Dernier message: 02/11/2005, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo