begin process at 2008 07 05 21:22:36
1 205 340 membres
309 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

EXPLOITER SA WEBCAM


Information sur la source

Catégorie :Graphique Classé sous : webcam, exploitation, effet, tracker, mouvement Niveau : Initié Date de création : 14/07/2004 Vu / téléchargé: 31 123 / 4 666

Note :
9,77 / 10 - par 13 personnes
9,77 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (29)
Ajouter un commentaire et/ou une note

Description

Voici un programme qui permet de rechercher l'image de la webcam et de faires des calculs dessus. C'est un complément de mon ancien programme sur la webcam, vous pouvez faire encore plus de combinaison. J'ai mis dans le zip quelques exécutable vous montrans le dectecteur de mouvement, la recherche de contour, le passage de 16bit à 16 couleurs, le passage de RGB à HSL et bien d'autre !

Conclusion

vous pouvez voir mon ancien programme de ce type sur http://www.cppfrance.com/code.aspx?id=23785
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   Code
  •   Programme que l'on peut faire
    • 16Bits_a_16couleurs.exeTélécharger ce fichier [Réservé aux membres club]217 177 octets
    • Contour.exeTélécharger ce fichier [Réservé aux membres club]217 177 octets
    • Mirroir.exeTélécharger ce fichier [Réservé aux membres club]217 177 octets
    • Seuil Noir Blanc.exeTélécharger ce fichier [Réservé aux membres club]217 177 octets
    • Teinte.exeTélécharger ce fichier [Réservé aux membres club]217 177 octets

Télécharger le zip

  • signaler à un administrateur
    Commentaire de pascalrigaud le 22/07/2004 11:41:02

    Ton prog est vraiment sympa.

    aurait tu une idée sur la manière d'afficher deux, ou plus, flux d'images provenant de webcam différentes?

    Pacal :-)

  • signaler à un administrateur
    Commentaire de Stepharcher le 24/07/2004 00:57:06

    Tu veux brancher plusieur webcam en même temps... Je ne connais pas le moyen, mon code part du principe que tu n'as qu'une webcam.

  • signaler à un administrateur
    Commentaire de jajacom le 17/11/2004 17:27:51

    Ton code est tout simplement génial.
    C'est bien organisé, commenté, les parties sont claires, et l'exécution est rapide, très peu de latence...
    Le tout fonctionnel, pas de bug détecté jusqu'à présent.
    En plus il correspond exactement à ce que je recherchais, j'aurais plus qu'à écrire mes propres fonctions de traitement, et tout sera nickel.
    C'est vraiment du travail de qualité, et ce serait bien si tout le monde était aussi organisé dans son travail.
    Merci pour ce code auquel je mets 10/10.

  • signaler à un administrateur
    Commentaire de phipedro le 16/07/2005 05:38:27

    bravo
    ton code est excellent. Je suis en stage et ton code m'a sauvé le stage ! Merci tout est clair. Tu fais vraiment du bon boulot. Ne t'iquiète pas tu es cité dans le .doc. Merci encore je te mets 10.

  • signaler à un administrateur
    Commentaire de KissyFroth le 16/10/2005 22:58:12

    Ben moi j'ai un probleme : la fenetre s'ouvre et se ferme tout de suite. Il n'a donc rien le temps d'afficher et ma camera ne s'allume meme pas. Si quelqu'un peut m'indiquer d'ou vient le problème ?
    (a part ca 0 errors 0 warnings)

  • signaler à un administrateur
    Commentaire de KissyFroth le 16/10/2005 23:09:40

    Je n'ai rien dit : en fait ma webcam était mal branchée. Cependant cela montre une lacune dans la gestion des messages d'erreurs. A part ca, tres bon prog. Merci !!! Je met 8/10.

  • signaler à un administrateur
    Commentaire de jpreffu le 22/10/2005 20:01:02

    Bonjour,

    J'ai un petit problème en DEV CPP, il me manque le fichier vfw.h.
    Je ne l'ai ni dans le ZIP ni dans ma biblio standard???
    Merci de me guider.

  • signaler à un administrateur
    Commentaire de Captain_Hook le 23/10/2005 17:49:46

    Un grand bravo pour ton programme qui m'a été extrêmement utile pour mon projet de reconnaissance d'images. Il s'agit vraiment d'un bon framework pour l'exploitation de sa webcam. 10/10 parce que je ne peux pas mettre plus :))

  • signaler à un administrateur
    Commentaire de lickthetoad le 23/10/2005 19:18:51

    salut a tous
    et bravo pour ton code.

    pour ce qui ont dev c++ il faut utiliser le fichier include
    vfwmod.h que vous pouvez trouver sur cette page http://www.devever.net/pegercer/akx/vcap/

    et liker les libreries
    (project option -> parametres- linker)
    -lvfw32
    -lmsvfw32
    -lavicap32

    apres ca ce compile parfectement

    a+

  • signaler à un administrateur
    Commentaire de lickthetoad le 26/10/2005 09:07:13

    j'ai regardee plus en dettail ton code qui reste tres bien,
    mais je trouve que pour ce qui est le calculle de couleur et RGB.
    tes fonctions sont pas tres bien codee...
    je mexplique avec un example:

    // Coef de bleu //TblImage[ID_Bmp].points[i][j].B=(TblImage[ID_Bmp].points[i][j].Couleur)/(256*256);
    TblImage[ID_Bmp].points[i][j].B=(TblImage[ID_Bmp].points[i][j].Couleur & 0x00ff0000)>> 16;

    // Coef de vert //TblImage[ID_Bmp].points[i][j].G=(TblImage[ID_Bmp].points[i][j].Couleur-TblImage[ID_Bmp].points[i][j].B*256*256)/256;
    TblImage[ID_Bmp].points[i][j].G=(TblImage[ID_Bmp].points[i][j].Couleur & 0x0000ff00)>>8;

    // Coef de rouge //TblImage[ID_Bmp].points[i][j].R=TblImage[ID_Bmp].points[i][j].Couleur-TblImage[ID_Bmp].points[i][j].B*256*256-TblImage[ID_Bmp].points[i][j].G*256;
            TblImage[ID_Bmp].points[i][j].R=TblImage[ID_Bmp].points[i][j].Couleur & 0x000000ff;

    voila ...
    en plus c'est plus rapide et plus clair ...
    PS(attention j'utilise sur 32bit au cas ou il y de l'alpha a implemanter)

    a+

  • signaler à un administrateur
    Commentaire de lickthetoad le 26/10/2005 09:14:18

    a oui il y a ça aussi :

    // Calcul la couleur
    //TblImage[ID_Bmp].points[i][j].Couleur = R + 256*G + 256*256*B;
    // faster
    TblImage[ID_Bmp].points[i][j].Couleur = R | G <<8 | B<<16;
    //0r
    //TblImage[ID_Bmp].points[i][j].Couleur = (R & 0x000000ff) | (G & 0x000000ff) <<8 | (B & 0x000000ff) <<16;

    et desolee pour mon français mais Français ne suis je pas.

    a+

  • signaler à un administrateur
    Commentaire de Stepharcher le 27/10/2005 18:05:55

    oui tu as raison, les fonctions sont pas vraiment optimisees. J ai plus essaye de faire dans le nombre de fonction plutot que dans la performance.

  • signaler à un administrateur
    Commentaire de sjasmin le 30/10/2005 21:08:38

    Je regardais dans ta fonction chargeCapture()
    TblImage[ID_Bmp].points[i][j].R = R = lpBits[4*320*(239-i)+4*j+2];
    TblImage[ID_Bmp].points[i][j].G = G = lpBits[4*320*(239-i)+4*j+1];
    TblImage[ID_Bmp].points[i][j].B = B = lpBits[4*320*(239-i)+4*j];

    donc on regarde les valeurs dans le tableau lpBits
    0 1 2
    4 5 6
    8 9 10 ... etc
    donc ma question que signifie la valeur lpBits[3] , lpBits[7] ...
    ce qui m'expliquerait pourquoi nous l'ignorons dans les calculs
    merci

  • signaler à un administrateur
    Commentaire de lickthetoad le 02/11/2005 07:12:18

    juste une petite precison de corectioon du code
    j'ai remplacee tous le 320 et les 240 (aussi les 319=320-1 et 239=240-1)
    avec
    #define WEBCAM_WIDTH    320
    #define WEBCAM_HEIGHT   240

    dans le code ca donne quelque chose comme cela:

    // Parcoure les pixels et les stocke dans un tbl
    for(i=0; i<WEBCAM_HEIGHT; i++)
    for(j=0; j<WEBCAM_WIDTH; j++)
    {
    // Récupère chaque coef du RGB
    TblImage[ID_Bmp].points[i][j].R = R = lpBits[4*WEBCAM_WIDTH*(WEBCAM_HEIGHT-1-i)+4*j+2];
    TblImage[ID_Bmp].points[i][j].G = G = lpBits[4*WEBCAM_WIDTH*(WEBCAM_HEIGHT-1-i)+4*j+1];
    TblImage[ID_Bmp].points[i][j].B = B = lpBits[4*WEBCAM_WIDTH*(WEBCAM_HEIGHT-1-i)+4*j];

    // Calcul la couleur
    //TblImage[ID_Bmp].points[i][j].Couleur = R + 256*G + 256*256*B;
    // faster ??
                TblImage[ID_Bmp].points[i][j].Couleur = R | G <<8 | B<<16;
                //0r
    //TblImage[ID_Bmp].points[i][j].Couleur = (R & 0x000000ff) | (G & 0x000000ff) <<8 | (B & 0x000000ff) <<16;
    }


    a+


    pour la reponse plus haut je crois que c'est l'alpha de la couleure que on prend pas en compte...
    32 bit code sur BGRA
    mais je dis peuetre une c.....


    thetoad

  • signaler à un administrateur
    Commentaire de lickthetoad le 02/11/2005 09:45:14

    personellement j'ai optimisee comme cela:

    int offset_i,offset_j;
    int *color_ptr;

    // Parcoure les pixels et les stocke dans un tbl
    for(i=0; i<WEBCAM_HEIGHT; i++)
      {
       offset_i=WEBCAM_WIDTH*(WEBCAM_HEIGHT-1-i);
    for(j=0; j<WEBCAM_WIDTH; j++)
    {
    offset_j=4*(offset_i+j);
    color_ptr= (int *)(lpBits+offset_j);

    // Récupère chaque coef du RGB
    //TblImage[ID_Bmp].points[i][j].A = A = (*color_ptr & 0xFF000000) >> 24;
                    TblImage[ID_Bmp].points[i][j].R = R = (*color_ptr & 0x00FF0000) >> 16;
    TblImage[ID_Bmp].points[i][j].G = G = (*color_ptr & 0x0000FF00) >> 8;
    TblImage[ID_Bmp].points[i][j].B = B = (*color_ptr & 0x000000FF);



    // Calcul la couleur
                               TblImage[ID_Bmp].points[i][j].Couleur = R | G <<8 | B<<16;
                            //0r
    //TblImage[ID_Bmp].points[i][j].Couleur = (R & 0x000000ff) | (G & 0x000000ff) <<8 | (B & 0x000000ff) <<16;
                            TblImage[ID_Bmp].points[i][j].Couleur = *color_ptr;
    }
    }



    voila c'est (encore)un peut plus rapide

  • signaler à un administrateur
    Commentaire de lickthetoad le 02/11/2005 09:46:37

    j'ai oublie les //
    avant TblImage[ID_Bmp].points[i][j].Couleur = R | G <<8 | B<<16;

  • signaler à un administrateur
    Commentaire de tyfeur le 04/11/2005 01:25:10

    Avec d'autres etudiants, on a realisé un logiciel de Motion Capture sous Windows et Linux.
    On a laissé nos rapports de projets qui contiennent pas mal d'infos sur les bibliotheques existant sur ces archi.
    Je vous file l'adresse, a l'epoque ca m'aurait bien aidé ! ;)
    http://3dmoka.free.fr

  • signaler à un administrateur
    Commentaire de laurentsmits le 04/11/2005 03:10:15

    bonjour,

    je dois faire un programme qui recupere le signal d'une webcam et l'affiche pour un club de robotique

    dans la fonction qui connecte la camera

    hWnd_WC = capCreateCaptureWindow("handle", WS_CHILD | WS_VISIBLE,
    20, 35, 320, 240, hWnd, 1) ;

    je voudrais te demander ou est decris capCreateCaptureWindow
    es ce que c une fonction qui es declarer dans le code
    ou avec un include ?
    comment es ce que peux la recuperer dans mon programme?


    merci

  • signaler à un administrateur
    Commentaire de lickthetoad le 07/11/2005 10:02:55

    Salut
    le prototipe est dans :
    #include <vfw.h> et il faut linker le lib.(si tu utilise mingw32 ou devc++ regarde dans unmessage plus haut pour savoir coment le compiler)

    tu trouve les specifications ici :
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_capcreatecapturewindow.asp

    a+

  • signaler à un administrateur
    Commentaire de max12 le 06/01/2006 09:26:21 administrateur CS

    Il manque la détection des drivers : if(!capDriverConnect(hWnd_WC,0)) remplacer le 0 par le chiffre qui représente le driver. Si quelqu'un veux le code pour faire l'inventaire des drivers présent sur la machine il n'a qu'a m'envoyer un MP. (Je le poste pas ici parce que le code est sur mon DD Externe et que j'ai vraiment pas envie de le plugger à 3:22 du math).

    A+

  • signaler à un administrateur
    Commentaire de julienbj le 05/03/2006 00:08:35

    Avec un peu de retard, et malgré que la curiosite n'attende pas ;)
    J'ai une petite question.
    Dans la macro capDriverConnect, à quoi correspond le second parametre?

  • signaler à un administrateur
    Commentaire de lickthetoad le 05/03/2006 06:57:27

    pour capDriverConnect reagde ici
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/multimed/htm/_win32_capdriverconnect.asp

    BOOL capDriverConnect(
      hwnd,  
      iIndex
    );

    Parameters

    hwnd

    Handle to a capture window.

    iIndex

    Index of the capture driver. The index can range from 0 through 9.

    Return Values

    Returns TRUE if successful or FALSE if the specified capture driver cannot be connected to the capture window.

    c'est ce que max12 disait plus haut ca corespon a l'index du driver de la webcam si tu as 2 ou + tu peut choisir la quelle detecter

    a+

  • signaler à un administrateur
    Commentaire de julienbj le 05/03/2006 13:22:06

    OK, j'avais deja regarder dans MSDN, mais jene voyais pas à quoi correspondait cet index.
    Now c'est plus clair, merci.

  • signaler à un administrateur
    Commentaire de aminerobot le 10/03/2006 19:37:00

    ou je peut trouver ça ...????
    pour pouvoir compilé avec dev c

    -lvfw32
    -lmsvfw32
    -lavicap32

  • signaler à un administrateur
    Commentaire de mauddie le 30/10/2006 17:17:46

    Bonjour,

    J'utilise ton programme pour détecter la position des yeux d'une personne dont le visage est centré sur l'image. Pour cela j'ai utilisé un filtre de Sobel afin de détecter les contours.
    Cela fonctionne bien mais j'ai un petit problème. J'ai ajouté une fonction de calcul de contour par la méthode de Sobel avec les autres fonctions déjà implémentées (calcul.cpp) et lorsque j'initialise un tableau de dimension 2 en double, j'ai une erreur lors de la compilation : dépassement de pile (stack overflaw). Je n'arrive pas à comprendre d'où vient le problème. Quelqu'un pourrait il me donner un élément de réponse ?
    Merci bcp.  

  • signaler à un administrateur
    Commentaire de boaj35 le 11/12/2006 09:50:13

    Bonjour à tous, je risque de vous paraitre etre null mais c'est le risque à courir. Je ne comprends pas trop ce prog; pourrais je avoir un peu d'aide. Je voudrais utiliser une webcam pour voir si une couleur precise est presente dans le champ de vision.  Pour cela je voudrais modifier un peu la fonction calRBG pour y arriver mais c'est loin d'etre simple pour moi car  

    1 Je n'arrive pas à avoir la fenetre doss ce qui me serait d'une grande utilité, afin de voir l'etat des variables ou pour  toute info qui me serait utilile, je suis preneur

  • signaler à un administrateur
    Commentaire de pweiss le 28/02/2007 20:05:12

    Bonjour,

    J'ai telecharge ce code qui me semble tres bien (c'est la premiere fois que j'utilise VC5, c'est le premier programme que je teste, et tout marche du premier coup...).

    J'ai ensuite ajoute une fonction de filtrage non lineaire (Rudin-Osher-Fatemi pour ceux qui connaissent) qui est sensee fonctionner en temps reel.

    La j'ai eu un probleme. Quand je compile en mode DEBUG, no prob, mais en mode RELEASE j'obtiens le message d'erreur suivant :

    error LNK2019:unresolved external symbol _capCreateCaptureWindowA@32 .....

    Il me semble que c'est une erreur classique, mais je n'ai pas trouve comment la resoudre...

    Quelqu'un peut-il m'aider?
    Merci d'avance...


  • signaler à un administrateur
    Commentaire de clemcg le 22/11/2007 12:23:32

    quand je lance le logiciel l'image est noir, il ne dois pas trouver la web cam, mais aucun message d'erreur

  • signaler à un administrateur
    Commentaire de nadia63 le 09/12/2007 19:51:51 10/10

    bravo et merci pour cet extraordinaire fluidité !!!

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS