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

OpenCV Discussion :

Comment capturer plusieurs flux vidéo ?


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 9
    Par défaut Comment capturer plusieurs flux vidéo ?
    bonsoir,

    je doit utiliser opencv sur un système embarqué pour faire de l'analyse d'image mais je n'arrive pas à capturer 2 flux vidéo simultanément. à chaque fois, ça me met une érreur à l'execution. ma dernière tentative était de faire un thread avec fork qui m'a donné l'erreur suivante sur l'un des 2 flux :

    libv4l2: error reading: Argument invalide
    HIGHGUI ERROR: V4L: Could not SYNC to video stream. Argument invalide
    il y aurait t-il un moyen de contourné ce problème? si ça vient de V4L, il y a surement peu d’espoir à moins d'attendre une nouvelle version de noyaux...

    sinon, quel autres libs pourraient me dépanner pour traité plusieurs flux vidéo ( ou au moins récupérer l'image)?

    merci
    à bientôt

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 9
    Par défaut
    ce code est magique : http://lowcost-robot.org/?page_id=351 , il me permet d'activer mes deux caméra (visible par les 2 diode) alors que si je lance un premier programme pour récupérer le premier flux puis un 2eme programme pour récupérer le 2ème flux , v4l2 m'envoie balader.

    le problème , c'est que je n'arrive pas à afficher les deux vidéos.
    quand je lance le programme , il m'affiche ceci et quitte brusquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    begin ...
    capture resolution 352x288 
    open_device
    init_device
    start_capturing
    mainloop
    select timeout
    le problème ce passe dans cette fonction:
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    static void
    mainloop                        (void)
    {
     
     
            while (!exit_app) {
                    for (;;) {
                            fd_set fds;
                            struct timeval tv;
                            int r;
     
                            FD_ZERO (&fds);
                            FD_SET (fd, &fds);
     
                            /* Timeout. */
                            tv.tv_sec = 5;
                            tv.tv_usec = 1;
     
                            r = select (fd + 1, &fds, NULL, NULL, &tv);
     
                            if (-1 == r) {
                                    if (EINTR == errno)
                                            continue;
     
                                    errno_exit ("select");
                            }
     
                            if (0 == r) {
                                    fprintf (stderr, "select timeout\n");
                                    exit (EXIT_FAILURE);
                            }
     
                            if (read_frame)				
                                    break;
     
                            /* EAGAIN - continue select loop. */
                    }
            }
    }
    en gros , la fonction select renvoie 0 , mais qu'est ce que ça signifie? et comment régler le problème ?

    edit, j'ai mis 2 cameras différente, le programme ne s'arrête plus à "select timeout" , mais il boucle infiniment: la dernière instruction "break" quitte la première boucle, mais il est toujours enfermé par la deuxième boucle, du coup, je n'ai pas d'affichage ...
    ce code est bizarrement fait et je n'arrive pas à trouver comment faire pour afficher les flux. si vous pouviez m'aidée , ça serait super cool de votre part.

    je suis sur que ça intérresse des personnes, la stéréovision. la kinect c'est tout nouveau et pourtant, c'est vue comme une révolution dans le monde de la vision par ordinateur...

    d'ailleur, si vous avez trouver une solution sur la capture de 2 flux simultanéments, n'hésiter pas !

    sur le site, le code n'ai pas entier à moins de le télécharger...
    du coup, j'ai copier le code ici pour que ça soit plus simple : http://ideone.com/jVrVZ

    merci
    bonne soirée

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 20
    Par défaut
    Bonjour,

    je viens de trouver ce lien dans la FAQ :
    http://opencv.willowgarage.com/wiki/..._cvCam_library

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 9
    Par défaut
    merci beaucoup de t'être intéresser à mon problème mais cvCam faisait partie du projet opencv dans ces premières versions, lorsqu'il était encore écrit en C . dans les nouvelles version, cvCam a disparue laissant place à auccune altérnative, d'où mon problème.
    mais, oui, si je ne trouve pas d'autre solution , je vais batir mon projet à partir de l'ancienne version d'opencv... ça m'embète beaucoup mais bon... faut savoir faire des sacrifices s'il on veut obtenir ce que l'on veut.
    en attendant, je cherche des altérnatives...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 20
    Par défaut
    Oui je me suis rendu compte après quelques recherches sur cvCam que ça avait l'air de dater un peu... La FAQ d'OpenCV ne semble plus vraiment à jour !

    C'est étonnant de voir que tu ne trouves aucune alternative ! C'est pourtant quelque chose que beaucoup de personnes doivent avoir besoin de faire.

    Regarde peut-être du côté de la librairie suivante : Mobile Robot Programming Toolkit (MRPT) : http://www.mrpt.org/
    Il y a une partie de la librairie consacrée à la vision par ordinateur et à la stéréovision. Je n'ai jamais utilisé cette librairie donc je ne te promets rien mais c'est peut-être une piste.

Discussions similaires

  1. Comment récupérer le flux vidéo d'une caméra IP ?
    Par MaTHieU_ dans le forum Débuter
    Réponses: 3
    Dernier message: 14/10/2011, 16h06
  2. Capture du flux vidéo d'une webcam
    Par nightwar dans le forum OpenCV
    Réponses: 1
    Dernier message: 16/12/2009, 13h31
  3. Comment assembler plusieurs fichiers vidéos en un seul ?
    Par andrianiaina dans le forum Vidéo
    Réponses: 2
    Dernier message: 23/09/2009, 22h51
  4. Capturer un flux vidéo : problème de perfomances
    Par verazano dans le forum OpenCV
    Réponses: 2
    Dernier message: 02/03/2009, 21h09
  5. Capturer le flux vidéo d'une caméra
    Par Jim_Nastiq dans le forum OpenCV
    Réponses: 12
    Dernier message: 02/05/2007, 11h48

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