Page 2 sur 3
Re: Reconnaissance d'objet WebCam
Publié : mer. 13/oct./2010 21:26
par PBW32
En fait, ImageJ c'est plutot pour l'imagerie médicale, OpenCV a l'air de mieux convenir :
http://opencv.willowgarage.com/wiki/
Et un tuto en français :
http://www.siteduzero.com/tutoriel-3-85 ... #ss_part_1
Re: Reconnaissance d'objet WebCam
Publié : jeu. 14/oct./2010 12:51
par Dumli
Pouvez-vous nous donner quelques précisions sur le fonctionnement principal du code de Dobro ?

Re: Reconnaissance d'objet WebCam
Publié : jeu. 14/oct./2010 16:05
par Backup
Dumli a écrit :Pouvez-vous nous donner quelques précisions sur le fonctionnement principal du code de Dobro ?

c'est un peut vague comme question non ?

Re: Reconnaissance d'objet WebCam
Publié : jeu. 14/oct./2010 20:06
par Dumli
C'est bien la tout le centre du problème

Non, en réalité ce que j'ai compris c'est :
Initialisation de la WebCam
Analyse de l'image
Repérage des couleurs
Comparaison ?
Affichage dans la fenêtre Windows
Et je crois que c'est tout ... Pour le moment je voudrais surtout comprendre le fonctionnement principal du programme. Voila
Merci en tout cas Dobro pour avoir Mis à Jour le code !

Et Merci pour le reste de la troupe pour toutes vos réponses

Re: Reconnaissance d'objet WebCam
Publié : jeu. 14/oct./2010 21:58
par Backup
Dumli a écrit :
Initialisation de la WebCam
Analyse de l'image
Repérage des couleurs
Comparaison ?
Affichage dans la fenêtre Windows
ben c'est exactement ça !!
il y a des procedures qui ne servent pas dans l'exemple ;
comme la rotation,
et la transformation en niveau de gris
ce qui prends du temps dans ce prg c'est la mise en tableau de l'image
a chaque boucle ...
ce prg exemple , teste si il y a changement sur l'ensemble de l'image
capturé !!
ce pourrai etre utile pour un test de caméra de surveillance , par exemple
le moindre truc qui change dans l'image, déclencherai une alerte
en l'état , ce prg peut faire ça !
par contre , c'est trop lourd pour une exploitation en jeux
ou la , il faudrait faire une détection, que sur une portion de l'image
ou alors , sur toute l'image , mais une seule couleur précise (en ne regardant qu'une composante , on multiplie par trois la vitesse d'analyse) etc ...
voir , resizer la taille de l'image , de façon a avoir moins de point a mettre en tableau
là, il y aurai moyen de faire un truc plus rapide
bref , tu as une bonne base pour développer dessus, l'imagination au pouvoir

Re: Reconnaissance d'objet WebCam
Publié : ven. 15/oct./2010 16:16
par Dumli
Ok mais la partie comparaison je ne comprends pas. Il met chaque pixel de l'image dans un tableau et après il compare chaque case du tableau ? Mais comment ? Et c'est quoi les variables xx ? yy ? Plein de questions comme ça que nous n'arrivons pas à résoudre ...
Re: Reconnaissance d'objet WebCam
Publié : lun. 25/oct./2010 21:42
par Dumli
Salut,
Comment adapter cette procédure de scan à une vidéo de type AVI ? Il faut prendre des capture d'images de la vidéo et scanner image par image ? Je précise qu'il faut que le résultat soit en "temps réel".

Une idée ?
Merci d'avance

Re: Reconnaissance d'objet WebCam
Publié : mar. 26/oct./2010 19:05
par Ghost
Bonsoir, je travaille avec Dumli sur ce programme depuis le début, et aujourd'hui nous sommes un peu bloqués.
Nous avons analysé le code fournit par Dobro (merci à toi), mais concrètement on galère un peu ^^"
On arrive à détecter les pixels qui ont une certaine couleur et à afficher des carrés vert là où ils sont, mais uniquement dans une image, maintenant nous souhaiterions passer à une vidéo.
Dumli pense qu'il faudrait lancer la vidéo dans une fenêtre windows, et analyser les pixels en temps réel, ce que je pense pour ma part irréalisable: on met déjà un certain temps pour une image, on arrive à diminuer le temps, heureusement, mais pas assez pour analyser 20 ou 30 images par secondes... De plus il faudrait ensuite afficher les carrés vert, et les effacer juste après, cela me semble très compliqué... Je pensais plus à directement nous servir des constantes #WM_... mais on ne s'y connait pas trop, et Dumli préférerait donc utiliser autre chose. D'après ce que j'ai compris ce sont des constantes de windows qui permettent aux différentes applications de communiquer entre elles, pas très bien compris la nature des informations qu'elles échangent, un peu de tout si j'ai bien compris, valeur numérique, chaîne de caractères.. Donc j'ai tenté d'analyser les constantes utilisées dans le code de Dobro:
#WM_USER : Il s'agit de la valeur à partir de laquelle on peut créer ses constantes personnalisés, mais normalement les valeurs peuvent déjà avoir été utilisées par d'autres applications, non? Il me semble que d'après ce que j'ai compris il valait mieux utiliser RegisterWindowMessage...
#WM_CAP_START : Définit le moment où on commence à envoyer des messages à windows, me semble...
#WM_CAP_DRIVER_CONNECT : Connecte le driver, utilisé quand on ouvre la fenêtre pour afficher les résultats
#WM_CAP_DRIVER_DISCONNECT : Déconnecte le driver
#WM_CAP_DRIVER_GET_CAPS : Permet visiblement de dire si la capture d'image est connectée à la capture d'image du périphérique du driver ou quelque chose du genre... Enfin j’interprète ça comme "vérifie si la capture d'image est bien celle de la webcam", pour notre cas
#WM_CAP_EDIT_COPY : Capture d'image de la video, dans le presse papier (Décompose la video en images et les met dans le presse papier?)
#WM_CAP_SET_PREVIEW : Transfère les captures faites dans la mémoire système d'après ma traduction, dans la ram quoi?
#WM_CAP_SET_PREVIEWRATE : Sert pour l'affichage, fixe le taux d'affichage d'image en mode de prévisualisation, donc fixe le nombre d'images qui s'affichent dans la fenêtre windows
#WM_CAP_STOP : Stoppe les captures de la video
#WM_CAP_SET_SCALE Le message WM_CAP_SET_SCALE active ou désactive le redimensionnement des images vidéo de prévisualisation. Si l'échelle est activée, l'image vidéo capturée est étendu aux dimensions de la fenêtre de capture -> ça a le mérite d'être clair x)
#WM_CAP_START : Redit, pour remettre la valeur d'origine du programme une fois finit? Pas vraiment compris...
#WM_CAP_DLG_VIDEOSOURCE : Ce qui sert pour choisir la source, la webcam en l'occurence, dans une petite fenetre de dialogue avec l'utilisateur (Youhou ça j'ai compris! xD)
Re: Reconnaissance d'objet WebCam
Publié : mar. 26/oct./2010 20:08
par djes
Le sujet là dessus sur le forum anglais (où Dobro a posté son code) :
http://www.purebasic.fr/english/viewtop ... 12&start=0
et un article avec du code facile à comprendre (mais pas à convertir)
http://www.codeproject.com/KB/audio-vid ... ction.aspx
J'avais trouvé un super truc là dessus il y a quelques mois, mais je doute de remettre jamais la main dessus... Heureusement, c'est un sujet très à la mode dans les universités, et les bons papiers ne manquent pas.
Re: Reconnaissance d'objet WebCam
Publié : mer. 27/oct./2010 9:29
par G-Rom
je ne sais pas ce que vous voulez faire.
mais à priori , vous êtes parti pour du "pure software".
Donc, vous arrivez à traiter une image , à repérer quelque chose dedans.
Imaginons que vous voulez "suivre" un carré vert dans votre vidéo.
- La première étape consiste à "accrocher" ce carré vert , en analysant TOUT les pixels de votre image. ( pour un gain de temps , mais perte en qualité , analysez 1 pixel sur 2. ).
- Une fois que vous avez "accrocher" ce carré vert , vous avez forcement les coordonnées pixel et la taille.
- Admettons que le carré vert est en 100x100 px et qu'il fait une taille de 30x30 px
- il est inutile maintenant d'analyser toute l'image , juste la surface qui commence en 100x100 d'une taille de 30x30 pixel avec une tolérance de quelques pixel ( plus la tolérance est grande , plus c'est long , mais précis dans le suivi )
- Si jamais la tolérance ne suffit pas ( l'objet se déplace plus vite que la tolérance ) , il faut relancer une séquence d'accrochage pour retrouver le carré vert en analysant les pixels de toute l'image.
Voilà , c'est de la théorie , mais c'est de cette manière que j'aurais procéder.
@+

Re: Reconnaissance d'objet WebCam
Publié : mer. 27/oct./2010 11:48
par Backup
je dois ajouter que ce n'est pas mon code
je l'ai juste mis en version 4.51 (utilisation des prototypes)
rien de plus

Re: Reconnaissance d'objet WebCam
Publié : mer. 27/oct./2010 12:08
par Backup
Dumli a écrit :Ok mais la partie comparaison je ne comprends pas. Il met chaque pixel de l'image dans un tableau et après il compare chaque case du tableau ? Mais comment ?
ben c'est simple
je ne prends pour l'exemple que la composante rouge
d'abord il prends la couleur rouge presente a l'instant dans la cam (enfin dans l'image scanné)
Code : Tout sélectionner
Pos = (yy * bmp\bmWidth + xx) << 2 ; ceci correspond a la fonction point(x,y)
Color = PeekL(*bits+Pos) ; ceci aussi !!
avg\r + Red(Color) ; met le resultat dans la structure avg
un peut plus loin il opère un petit calcul pour réduire le chiffre
qui va lui permettre de mettre en évidence la Différence
Code : Tout sélectionner
avg\r = avg\r / 256
diff + Abs(prev(x,y)\r - avg\r); la comparaison a lieu ici , on compare a l'ancienne image du tableau prev()
cette différence (Diff) ; il la compare a l'image précédente qu'il avait gardé précédemment
(dans le tableau prev(x,y)\r )
ensuite il faut bien noter la nouvelle image qui a changé , pour la confronter a la futur image
qui changera , donc il la met en tableau pour la prochaine comparaison
voila , ceci est reproduit avec les 3 composantes RVB

Re: Reconnaissance d'objet WebCam
Publié : ven. 29/oct./2010 14:44
par Ghost
Nous cherchons à détecter des pixels de couleur rouge (on ajustera ensuite pour la couleur, pas le plus compliqué) présent sur l'image que renvoie la cam, et pour afficher qu'on la détecte on affiche des carrés vert comme dans le programme que Dobro a adapté en 4.51 (c'était pour le designer qu'on disait que c'était le tien ^^"), et il faudrait que cela soit fait en temps réel. Concernant l'optimisation du code, on a trouvé comment faire, ce que l'on veut maintenant c'est se servir d'une video ou de la cam directement pour détecter les pixels de couleur rouge, et non pas d'une image comme on le fait depuis un moment déjà. D'où ma question concernant les constantes #WM_...
Merci pour l'explication

Re: Reconnaissance d'objet WebCam
Publié : mer. 03/nov./2010 11:08
par Dumli
Désolé les Modo mais .... UP !
Non sérieusement, on reprend la partie Programmation Lundi donc on a vraiment besoin de comprendre avant.

Re: Reconnaissance d'objet WebCam
Publié : mer. 03/nov./2010 11:34
par Cls
Ça a l'air intéressant comme projet. Perso je ferais comme G-Rom à expliqué plus haut.
D'après ce que j'ai compris, vous souhaitez suivre un objet sur des images. Je vois déjà 5 chantiers :
1. récupérer le flux vidéo
2. découper image par image (peut être fusionné au 1)
3. analyser les images comme décrit par G-Rom
4. gérer l'affichage du carré vert
5. interfaces et traitements annexes
Aucune idée de ce que vous cherchez précisément mais je pense qu'il faut creuser chaque partie séparément (en même temps je ne suis pas expert du traitement des images alors...

) !