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 :

Deux webcams USB


Sujet :

OpenCV

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Par défaut Deux webcams USB
    Bonjour à tous,

    cela fait deux jours que je parcours le web et ce forum et je suis assez perplexe : je cherche "tout simplement" à acquérir les flux de deux webcams usb et les afficher dans deux fenêtres indépendantes. (donc pas nécessairement synchronisées, je ne cherche pas à faire de la stéréo).

    Plusieurs discussions traitent déjà de ce sujet, et j'ai pourtant essayé pas mal d'exemples, mais aucun ne fonctionne.. au mieux il n'y a pas d'erreur mais j'ai deux magnifiques fenêtres grises.

    je suis sous windows, mes deux caméras fonctionnent très bien en avec tous les exemples qui n'utilisent qu'une caméra. La lib utilisée est opencv 1.0

    apparemment cvCreateCameraCapture et cvCaptureFromCAM posent problème dès qu'on essaie de sélectionner la seconde webcam, et cvcam est déconseillé car obsolète (j'ai aussi essayé avec, d'après le tuto de willowgarage, ça ne marche pas...)

    ma question est toute simple : quelqu'un a-t-il réussi à faire fonctionner deux caméras ?

    ou pensez-vous qu'il faut passer à la lib 1.1prea ? ou attendre une version 1.1 stable ? ce qui serait assez étonnant vu le nombre de personnes qui font de la stéréo, et depuis longtemps, il doit quand même y avoir un moyen, je pense donc que quelque chose m'a échappé...

    d'avance merci pour votre aide

  2. #2
    Candidat au Club
    Inscrit en
    Mai 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 3
    Par défaut même problème
    Up!

    J'ai exactement la même question...

    Je suis sur un projet qui demande de faire fonctionner non pas 2 mais plusieurs webcams à la fois (jusqu'à 8) et de pouvoir les gérer toutes individuellement.
    Pour l'instant je n'en ai que 2 pour tester, et j'arrive à les afficher chacune dans une fenêtre séparée, via les fonctions cvcam (jamais réussi à faire fonctionner plus d'une webcam avec les fonctions highgui...).

    Voilà mon code, qui fonctionne chez moi :

    CameraHandler.cpp :
    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
    #include "CameraHandler.h"
     
    void CameraHandler::test() {
        char camName[7];
        HWND *windowsSet = NULL;
     
        int nbCams = cvcamGetCamerasCount();
        windowsSet = new HWND[nbCams];
     
        for (i=0 ; i<nbCams ; i++) {
     
            sprintf(camName, "%s%d%c","Cam",i,'\0');
            printf("%s : %d\n", camName, i);
     
            cvNamedWindow(camName, CV_WINDOW_AUTOSIZE);
            windowsSet[i] = (HWND) cvGetWindowHandle(camName);
            cvcamSetProperty(i, CVCAM_PROP_ENABLE, CVCAMTRUE);
            cvcamSetProperty(i, CVCAM_PROP_RENDER, CVCAMTRUE);
            cvcamSetProperty(i, CVCAM_PROP_WINDOW, &(windowsSet[i]));
     
     
            if (i>=8) break; //Gestion de 8 cameras max
        }
     
        cvcamSetProperty(0, CVCAM_STEREO_CALLBACK , (void*) CameraHandler::stereocallback);
     
        cvcamInit();
        cvcamStart();
     
        cvWaitKey(0);
     
        cvcamStop();
        cvcamExit();
    }
    CameraHandler.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <opencv/cxcore.h>
    #include <opencv/highgui.h>
    #include <opencv/cv.h>
    #include <opencv/cvcam.h>
     
    [...]
     
    static void stereocallback(IplImage* img1, IplImage* img2);
    Ce code fonctionne, les 2 webcams s'affichent chacune dans une fenêtre.
    Mais cvcam a un mode de fonctionnement un peu bizarre, je trouve, apparemment on est obligé de synchroniser les caméras via :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cvcamSetProperty(0, CVCAM_STEREO_CALLBACK , stereocallback);
    avec stereocallback qui est une fonction de callback gérant les images provenant de 2 webcams.

    Du coup je ne sais pas trop ce qui se passe pour 3 webcams ou plus??
    Quels paramètres passer à cvcamSetProperty pour chaque webcam? et comment savoir quelle image correspond à quelle cam??

    Tout ça pour en arriver à la même question que thomL : n'y a-t-il pas un moyen plus simple/standard de gérer plusieurs webcams sous windows?

    Merci d'avance

  3. #3
    Membre Expert

    Homme Profil pro
    .
    Inscrit en
    Janvier 2006
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Janvier 2006
    Messages : 703
    Par défaut
    Bonsoir,

    Je me permets de relancer cette conversation me trouvant dans le même problème.
    Je suis sous linux, la doc dit d'utiliser cvcam, mais cvcam n'est plus distribuée sous linux depuis quelques temps... Je cherche un moyen désespérément de faire l'acquisition de mes 2 caméras USB. Je peux faire une acquisition de chacune d'entre elles, mais pas les deux en même temps

    Si quelqu'un avait la moindre idée je serais vraiment preneur !
    Merci d'avance.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Bonjour,

    Je me permet de déterrer ce sujet car je souhaite faire de la stéréo avec OpenCV et je rencontre un problème de taille. [ Bien sur j'ai parcouru tout le web avant de poster .. ]

    J'ai déjà une webcam intégrée sur mon PC portable HP et j'ai acheté 2 webcams USB Hercules. Je ne souhaite pas utiliser la webcam intégrée mais les deux nouvelles pour les placer où je veux.

    J'ai un code OpenCV qui fonctionne bien mais il actionne la webcam intégrée et une des deux caméra USB (voir plus bas).

    Quand j'essaie de mettre { 1 et 2 } pour cvCreateCameraCapture j'ai le droit à un magnifique blue screen. Du coup j'ai essayé de désinstaller la webcam intégrée en réssayant les { 0 et 1 } et { 1 et 2 } et toujours le blue screen.

    J'ai Windows 7.

    Q : Ne peut on pas utiliser 2 webcams USB en simultanée sur Windows avec OpenCV, si oui comment ? (j'ai vu que la lib cvcam était devenue obsolète depuis bien longtemps)

    Je m'en remet à vous, bien merci d'avance !

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
     
    #include <stdio.h>
    #include "highgui.h"
    #include "cv.h"
     
    int main() {
     
    	// Touche clavier
    	char key;
    	// Image
    	 IplImage *image;
    	 IplImage *image1;
    	// Capture vidéo
    	CvCapture *capture;
    	CvCapture *capture1;
     
    	// Ouvrir le flux vidéo
    	capture = cvCreateCameraCapture(0);
    	capture1 = cvCreateCameraCapture(1);
     
    	// Vérifier si l'ouverture du flux est ok
    	if (!capture) {
     
    	   printf("Ouverture du flux vidéo 0 impossible !\n");
    	   return 1;
     
    	}
    	if (!capture1) {
     
    	   printf("Ouverture du flux vidéo 1 impossible !\n");
    	   return 1;
     
    	}
     
    	// Définition de la fenêtre
    	cvNamedWindow("gauche", CV_WINDOW_AUTOSIZE);
    	cvNamedWindow("droite", CV_WINDOW_AUTOSIZE);
     
    	// Boucle tant que l'utilisateur n'appuie pas sur la touche q (ou Q)
    	while(key != 'q' && key != 'Q') {
     
    	   // On récupère une image
    	   image = cvQueryFrame(capture);
            image1 = cvQueryFrame(capture1);
     
    	   // On affiche l'image dans une fenêtre
    	   cvShowImage( "droite", image);
    	   cvShowImage( "gauche", image1);
     
    	   // On attend 10ms
    	   key = cvWaitKey(10);
     
    	}
     
    	cvReleaseCapture(&capture);
    	cvReleaseCapture(&capture1);
    	cvDestroyAllWindows();
     
    	return 0;
     
    }

  5. #5
    Membre chevronné
    Inscrit en
    Mars 2010
    Messages
    439
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 439
    Par défaut
    http://www.starlino.com/opencv_qt_stereovision.html

    tu es sur de tes index de caméra ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Merci beaucoup pour le lien je vais regarder la source avec attention !

    En attendant je vais répondre à ta question : non je ne suis pas sur ...

    voila ce que je pense avoir compris des indices : 0 est pour les webcams hardware, 1 pour les webcams périphériques externes, 2 ????, 3 et 4 pour linux et apres grand mystère.

    Dans les posts que j'ai pu lire sur le web, les gens essaient tous les indices voir si ca fonctionne en gros. Moi je freine un peuà l'idée de faire car ca fait deja 10 fois que j'ai le blue screen et reboot forcé de la machine donc j'ai un peu les boules...

Discussions similaires

  1. Webcam usb (medion,microsoft)
    Par AigletoN dans le forum Matériel
    Réponses: 3
    Dernier message: 07/01/2008, 19h24
  2. Acquisition d'images par webcams USB
    Par Invité dans le forum Bibliothèques
    Réponses: 11
    Dernier message: 24/01/2007, 10h13
  3. Problème webcam usb
    Par stripitu dans le forum Matériel
    Réponses: 1
    Dernier message: 25/09/2006, 16h18
  4. Projet C++, Webcam, USB et MySQL
    Par Cooly dans le forum C++
    Réponses: 4
    Dernier message: 19/12/2004, 23h40

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