2010-07-19 23 views
1

Je fais un projet en C# appelé Suivi des objets en temps réel initié par l'utilisateur. Ce que je veux est, prendre l'entrée d'une webcamera à une image (faite en utilisant dshownet), puis dessiner un rectangle élastique sur la vidéo (disons sur le visage/oeil/nez/corps entier d'une personne - je pense que je vais vers le bas) en utilisant une souris, alors je veux suivre la zone entourée par le rectangle élastique.Comment faire pour suivre la zone dans un rectangle de bande élastique dans une vidéo pendant qu'elle diffuse en utilisant C#

Je passe actuellement par l'exemple dshownet bitmapmixer dans le dossier des échantillons pour apprendre comment dessiner sur une vidéo (pas encore de succès, cependant, j'ai fait le rectangle élastique, il s'agit maintenant de le faire fonctionner sur le dessus du vidéo).

alt text http://i25.tinypic.com/vd32p1.jpg

Ma question principale est de suivre, ce qui est enfermé dans le rectangle de bande de caoutchouc (après le rectangle est dessiné, il reste visible, à moins effacé avec un bouton de commande). Quelqu'un a dit de passer par Face and eyes Detection (je ne fais pas de détection dans mon projet vraiment). Eh bien, je peux me tromper. La façon dont je pense à cela est comme ceci, je pense que si je pouvais considérer la zone en dehors du rectangle comme arrière-plan, et extraire les histogrammes de couleur de la zone dans le rectangle (premier plan) et vérifier si elle apparaît dans les images suivantes, je peux suivre avec succès [Je ne sais pas comment y parvenir via le code]. Est-ce correct ?? Par ailleurs, je considère que le tracker est le rectangle, qui reste visible tant que la vidéo est en streaming et se déplace avec la personne dans la vidéo. Pour commencer, j'expérimente tout cela avec un fichier vidéo enregistré.

Des idées sur la façon de faire le suivi? Est-ce que cela importe quelle partie de l'humain je prends pour suivre ses mouvements comme le visage ou le corps entier?

Nous vous remercions de votre temps.

Répondre

0

Il semble que ce dont vous avez besoin est de détecter une zone de visage humain dans chaque image et de dessiner un rectangle couvrant la zone. Je ne suis pas un expert dans la zone de détection de visage, mais j'ai fait un projet de génération de caricature automatique en utilisant ASM. L'analyse de l'histogramme des couleurs est l'un des moyens de le faire, mais je me souviens que les approches basées sur les formes fonctionnaient beaucoup mieux. En outre, consultez AAM car il s'agit d'un modèle amélioré de ASM. Si vous les google, vous devriez être capable de trouver beaucoup d'articles. BTW, si vous avez besoin d'un moyen rapide, je recommanderais d'utiliser OpenCV. Il a déjà des fonctions très belles et simples pour détecter plusieurs visages dans une image et obtenir ces zones comme des rectangles. Que voulez-vous dire par «obtenir ces zones en tant que rectangles»?

+0

Voulez-vous dire des rectangles de ligne droite sans la chose pointillée en eux? – Haxed

+0

Le dessin des lignes pointillées dépend entièrement de vous. OpenCV vous donne CvRect qui contient la position, la largeur et la hauteur des rectangles. Veuillez cliquer sur le lien OpenCV dans ma réponse et voir l'exemple de code. – young