|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() |
Bonjour,
Je voudrais faire un suivi d'objet. ( l'objet sera de couleur vive). est ce que certain d'entre vous on déjà effectué se genre de chose? D'après vous qu'elle est la meilleur méthode. --> fait un getpixel sur l'ensemble des couleurs avec une tolérance. --> faire un filtre pour détecter le contour, puis travailler sur ce contour. --> faire un filtre pour détecter le mouvement et jouer sur le mouvement. --> une autre solution J'ai vu pas mal d'exemple video, mais pas le code correspondant. Merci d'avance |
|
|
00
|
|
|
#2 |
|
Membre actif
![]() Inscription : avril 2007 Messages : 126 ![]() |
J'ai déjà codé ce genre de truc, mais pas en Flash.
Redarde la méthode getColorBoundsRect de BitmapData, ça devrait répondre à ta question. A vue de nez, je chercherai dans cette voie: - Je réduirai l'image au minimum pour qu'elle soit signifiante (genre 150x100 ou 200x125 en général ça peut suffire). Réduir l'image accélèrera la vitesse d'appliquation de tes filtres. - Je ferai un flou sur l'image, pour lisser les couleurs. - comme getColorBoundsRect détecte une valeur de couleur, et non pas une plage de valeurs, je ferai un BitmapData.threshold > pour la valeur inférieure, ce qui te donnes un mask noir/blanc de tout ce qui est supérieur, et un autre BitmapData.threshold < pour la valeur supérieure. - ensuite, je mixerais les deux masques, sûrement avec un BitmapData.draw() de l'un sur l'autre avec un BlendMode "multiply". - enfin, j'effectuerai un getColorBoundsRect pour 0xFF sur le masque résultat obtenu. Mais cette solution risque de demander trop de calcul, et d'être trop lente... faut essayer... En tout cas, balayer l'image avec une boucle x et y pour faire un getPixel est beaucoup trop lent, quoique tu peux toujours tester un pixel sur 10 ou 20... ça dépende de la taille de ton objet... Là ça peut peut-être être assez rapide... Avec seulement getColorBoundsRect tu risques de ne pas détecter ton objet correctement, ou d'être très tributaire de l'éclairage qui risque de changer, et de décaler ta capture... Sinon, un truc classique, consiste à soustraire l'image actuelle de la caméra avec l'image précédente que tu as stockée dans un tampon. Tu te retrouves avec du noir partout, sauf là où ça a bougé. Avec un getColorBoundsRect ou un threshold, tu sais où se trouvent les objets en mouvement, indépendemment de la couleur, ou des changements de lumière... C'est à mon avis dans cette voie qu'est la meilleure solution (ce qui ne t'empêche pas d'essayer l'autre). |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() |
merci pour ta réponse.
je teste, je teste |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com