Gestion d'une webcam

olofolof Membre
16:20 modifié dans Vos applications #1
Bonjour à  tous,

j'ai acheté une webcam il y a quelques jours et j'ai une petite idée de développement qui me trote dans la tête. Le problème est que cette idée demande des connaissances que je n'ai pas. Je suis intéressé à  les acquérir, mais avant d'y passer des heures, j'aimerais entendre votre avis sur la chose !

Le but : reconnaitre un point lumineux (par exemple) avec une webcam et en faire le suivi (coordonnées x et y) en temps réel (ou presque). Une personne est devant son ordi, webcam allumée, avec une casquette sur la tête. Sur cette casquette, une LED, par exemple. Le but étant d'avoir une source lumineuse qui pourrait être "extraite" de l'image en lui appliquant des filtres par exemple.

Les points auxquels j'ai pensé :

1. capture des images issues de la webcam (comment faire, mystère !)
2. passage par un ou plusieurs filtre pour arriver à  une image du genre noire avec un point blanc (la LED)
3. "lecture" de l'image pour localiser le point blanc.

Je me demande si les points 1 et 2 ne pourraient pas être fait avec Quartz ?!?!

Voilà  ou en est ma réflexion.

Des avis, des conseils, ... ?

Merci !

Réponses

  • AliGatorAliGator Membre, Modérateur
    juin 2007 modifié #2
    dans 1181829096:
    2. passage par un ou plusieurs filtre pour arriver à  une image du genre noire avec un point blanc (la LED)
    3. "lecture" de l'image pour localiser le point blanc.
    Je n'ai jamais encore fait mumuse avec Quartz, du moins par code, mais j'ai déjà  fait ce genre de choses (ça fait un peu partie de ma formation à  la base) et j'ai des algos si besoin ;)
    Surtout s'il s'agit de suivre "la plus grosse tâche de couleur C" sur une image (j'avais même déjà  fait un programme en C++ qui faisait ça, en utilisant les IPP d'Intel). J'ai même fait une appli pour le taf (donc Windaube, dsl) pour faire un suivi de visage (filtre Viola-Jones sur l'image, si tu veux faire des recherches) sur l'image de la webcam... ;)

    Une des difficultés aussi est d'isoler la couleur (ça dépend de la couleur que tu recherches, certaines sont plus facile à  isoler que d'autres) : l'espace colorimétrique n'est pas euclidien, c'est à  dire que perceptuellement, tu saurais faire la différence entre du marron et du jaune et du orange, alors qu'en terme de distances euclidiennes (genre R^2+G^2+B^2 dans l'espace RGB) ces couleurs peuvent être à  la même "distance" que du bleu, qui pourtant parait plus éloigné visuellement... De même du rose est-il à  considérer comme du rouge très éclairé ou non ? Etc.
    Si tu cherches du rouge, le filtre à  faire pour binariser l'image n'est pas méchant, mais si c'est du marron...
    Si c'est une couleur donnée qui ne bougera pas tu peux regarder [urlhttp://www.greyc.unicaen.fr/~luc/ENSEIGNEMENT/COURS/TR_IMG/node39.html]les ellipses de McAdam[/url] pour connaà®tre le voisinage des couleurs acceptables, mais si ta couleur est une variable...

    Ceci dit, tu as déjà  des projets en Cocoa sinon qui traà®nent sur le net et qui font des choses similaires, du moins avec une iSight (après je sais pas si c'est la même API pour une webcam quelconque, faut espérer). Just Google it, je me rappelle en avoir vu traà®ner quelques unes au gré de mes errances sur la toile ;)
    Et puis pour les points 2 et 3 tu peux déjà  essayer de faire du code qui s'applique à  une image, code que tu appelleras pour chaque image de ta webcam à  terme, en attendant de résoudre le point 1. Certes en général pour les algos de suivi il y a un sacré de paquet d'optimisations (je pense entre autres à  Kalman ou au paramétrage de la fenêtre de recherche), mais ce sera déjà  un bon début :D
  • olofolof Membre
    16:20 modifié #3
    Merci Ali, je vais potasser tout ça !!! Je te solliciterai probablement, mais pas tout de suite, d'ici à  que je m'y mette  ;)
  • objectiveyannobjectiveyann Membre
    16:20 modifié #4
    Pour capturer un flux de la webcam, tu peux utiliser CocoaSequenceGrabber, tres facile d'utilisation, il s'appuie sur les classe de Quicktime. Je suis en train de faire un logiciel de detection de mouvement, donc je suis en plein dedans et je debute la programmation sur Mac, donc ca avance pas tres vite, mais ca avance. hehe
  • 16:20 modifié #5
    Sinon avec Quartz Composer, y'a un moyen super simple, après il te suffit d'implémenter la QuartzView dans ton projet.

    Ci-joint, le simple truc à  faire pour se voir (c'est déjà  pas mal). Après niveau enregistrement je pense que Quartz Comp. peut le faire aussi, mais suis pas sûr..




    [Fichier joint supprimé par l'administrateur]
  • olofolof Membre
    16:20 modifié #6
    J'ai trouvé quelques bouts de code source pour ça sur le net, et j'ai aussi fait mumuse avec Quartz Composer. Mais pour l'instant, c'est le stand-by. Comme je l'ai dit dans mon premier post, c'est une idée comme ça qui va prendre bien du temps.

    Pour l'instant, j'ai des pistes, c'est déjà  bien  ;)
Connectez-vous ou Inscrivez-vous pour répondre.