Gestion de la Webcam avec Flex et retouche d'image à la volée
1 déc. 2008
Par Jean Marie Macé - Exemples Flex - Lien permanent
Je me suis amusé avec ma webcam et Flex pour voir rapidement les possibilités qui peuvent s'ouvrir avec Flex et une Webcam. Je vous propose donc ce billet qui illustre le sujet.
Première étape, il vous faut une webcam, évidement! Ensuite un petit bout de code suffit a récupérer les images de votre webcam. C'est franchement très simple et très rapide graçe à la classe Camera. Voici les quelques lignes à mettre en place dans votre fonction d'initialisation par exemple ou bien sur un événement comme le click sur un bouton... je charge l'image de la webcam dans un composant VideoDisplay
public function startWebcam():void
{
try
{
// Récupère et paramètre la webcam (c'est à ce moment que Flash va demander à l'utilisateur d'autoriser ou non l'accès à la webcam)
webcam = Camera.getCamera();
webcam.setQuality(65538, 0);
webcam.setMode(320, 240, 25, false);
// Affiche le flux de la webcam dans l'objet videoDisplay
videoDisplay.attachCamera(webcam);
}
catch (e:*)
{
Alert.show("La webcam n'a pas été détectée", "Erreur");
return;
}
}
Voila, vous voyez votre tête dans votre navigateur! J'ai poussé un peu plus loin pour observer le comportement du Flash Player si on traite l'image à la volée, par curiosité!
Je récupère simplement une image toutes les 80 ms (suffisant pour le persistance rétinienne) et je la traite avec des filtres simple, à savoir , GrayScale et Sepia, que j'ai rapidement codé. Il n'y a aucune optimisation, c'est un peu brut mais ce billet me permettra de garder ces tests et résultats à l'esprit.
si cela vous intéresse, je vous met à disposition une démo avec les sources(click droit)
Commentaires
Merci beaucoup pour ton tuto.
ValentilLes images provenant de la webcam sont à l'envers. Je m'explique : si je tourne la tête à droite, sur les images elle va à gauche :) un peu comme une symétrie axiale verticale. Comment pourrais-je rectifier ce problème ?
Merci
dans la fonction timerTick par exemple tu applique la matrice d'inversion a ton bitmap :
Jim_NastiqSalut et merci pour ton tuto. Je me demandais s'il était possible de faire de la détection de mouvement à partir de ce code... Si oui, pourriez-vous m'expliquer comment vous vous y prenez ? Merci d'avance
JibsJibs, pour la détection de mouvement il y a un event (activity) lié à la classe Camera, cela devrait t'aider.
Jim_NastiqSi tu souhaites coder toi même la détection de mouvement je te conseille d'utiliser la soustraction (différence entre une image a un temps T à une image de référence) mais pour cela le traitement est préférable en niveau de gris ;)
Merci de ta réponse Jim_Nastiq ; vais voir ce que je peux faire avec ça !
JibsMerci, pour votre aide Jim_Nastiq, et merci pour le conseil
mine87salut et merci pour ta démo ok j'avais fait pareil mais sans le truc sépia et blackand white
jean-michelj utilise swfc c 'est assez primaire mais j'aime bien je suis plus codeur que graphiste :)
je viens de confirmer ce que je pensais swfc est proche de flex en faite je me demande si adobe n'a pas pompé l'idée :)
je propose ce lien pour les debutants en flash ou je mets mes sources ce n est pas du grand art mais ça peut aider à comprendre comment fonctionne flash
http://jeanmichel.gens.free.fr/swfc
thx pour ce tuto
jina