pseudo-logoLe projet concombre

Concombre est un programme permettant de jouer avec le flux video d'une webcam USB. Entièrement basé sur la librairie OpenCV, il remplace un objet détecté dans l'image par une autre image définie par l'utilisateur (le modèle).
Typiquement il est possible de remplacer les visages par une rondelle de concombre, le programme gère tout seul le rapport de taille entre le modèle utilisateur et le visage trouvé.
De nombreux contrôles sont disponibles, le déplacement du modèle par rapport à l'objet trouvé, le facteur d'échelle global entre l'objet et le modèle, la sauvegarde d'une image et l'enregistrement de la séquence video.
Concombre prend également en charge la transparence. Si vous utilisez un fichier PNG pourvu d'un canal alpha vous pourrez exploiter un modèle qui n'est pas rectangulaire.

Installation

Sous debian concombre est disponible par apt/aptitude pour Lenny i386 et amd64, il suffit de rajouter les dépôts suivant dans votre source.list :
deb http://www.deb-indus.org/debian/ lenny main
deb-src http://www.deb-indus.org/debian/ lenny main
puis
#apt-get install concombre
apt vous ramènera quelques dépendances dont libcv2, libcvaux2 et libhighgui2. Il s'agit de la dernière version de la librairie OpenCV sur laquelle concombre repose entièrement , IHM comprise.
Les sources debianisées sont également disponibles par :
#apt-get source concombre
Pour les autres distributions, aucun paquet binaire n'est disponible à ce jour. L'archive tar.gz est téléchargeable depuis le lien en haut de page.

Utilisation

Pour le premier lancement de concombre vous devrez formuler une ligne de commande comme celle-ci :
$concombre -w 352 -h 288 -c /home/user/classifier.xml -f /home/user/file.jpg
Les arguments -w, -h, -c et -f doivent obligatoirement être renseignés. Leur signification est assez simple.
  • -w : résolution X de la webcam
  • -h : résolution Y de la webcam
  • -c : chemin vers le fichier descriptif de l'objet à détecter. Ce fichier est au format xml il est généré par une procédure d'apprentissage appelée haartraining. Le paquet debian libcv-dev (ou opencv-doc) donne des exemples notamment des fichiers xml descriptifs du visage humain. Ceux-ci peuvent être trouvés dans /usr/share/opencv/haarcascades ou alors ici. Je vous conseille d'utiliser haarcascade_frontalface_alt2.xml pour les visages. Si vous voulez vous faire vos propres descriptifs un tutoriel est à disposition ici (j'espère que vous avez un peu de temps et pas mal de café devant vous)
  • -f : le chemin vers l'image de remplacement
Voici un petit exemple avec une webcam Logitech Quickcam Express et le descriptif haarcascade_frontalface_alt2.xml.

exemple


D'autres arguments optionnels sont disponibles :
  • -s 2.2 : pour appliquer un facteur d'échelle (ici 2.2) entre l'objet détecté et votre motif (fonction également accessible en fonctionnement)
  • -t : pour activer la transparence sur les fichiers PNG pourvus d'un canal alpha
  • -r : facteur de correction pour les videos. Sachant que la recherche d'un objet est très gourmande en CPU les performances de concombre vont varier d'une machine à l'autre. Ainsi sur une machine puissante vous aurez un flux video à 24fps, tandis que sur une brouette comme la mienne vous aurez plutôt du 3fps. Sachant que le mode enregistrement de video de concombre génère une video à 24fps si votre PC vous crache un flux à 3fps les mouvements risquent d'être "un peu" rapides. Le facteur -r permet d'écrire plusieurs fois la même trame dans le fichier video et donc de corriger la lenteur de votre satané celeron qui n'avance à rien.
Voilà pour le premier lancement. Après concombre génère un fichier .concombre.xml dans votre répertoire utilisateur où il sauvegarde sa configuration.
Vous n'aurez plus qu'à le rappeler par
$concombre
ou
$concombre -t
Notez que vous pouvez quand même surcharger des paramètres, par exemple :
$concombre -f /home/user/yaunezouilledanscesoft.png -t
Pendant le flux vous avez plusieurs commandes possibles, toutes se passent au clavier (pas encore de click-odrome) avec les touches en minuscule ou majuscule (avec MAJ):
  • s : sauvegarde de l'image courante dans le répertoire courant
  • m : démarrer/arrêter un enregistrement video (format mpg1)
  • b/B : diminuer/augmenter la luminosité de l'image. Cette fonction fait appel à la sensibilité de la caméra, si celle-ci n'a pas de réglage de luminosité ou si OpenCV ne prend pas en charge ce réglage pour ce matériel ça risque de planter sauvagement.
  • c/C : diminuer/augmenter le contraste de l'image. Même remarque que pour la luminosité.
  • ESC : quitter
  • l/L : déplacer l'image de remplacement de 1/10 pixels vers la gauche
  • r/R : déplacer l'image de remplacement de 1/10 pixels vers la droite
  • u/U : déplacer l'image de remplacement de 1/10 pixels vers le haut
  • d/D : déplacer l'image de remplacement de 1/10 pixels vers le bas
  • z/Z : augmenter/diminuer le facteur d'échelle de l'image de remplacement
  • e : reset de tous les paramètres
  • n/N : diminuer/augmenter la sensibilité de détection. C'est une remarque qui a été faite sur les dernières révisions : trop de faux positifs. Etrangement je n'avais jamais eu ce problème sur mes machines, j'en déduis que sur les machines récentes pourvues de double coeur l'algorithme de détection se comporte différemment. Ce paramètre est sauvegardé dans le .concombre.xml.

Maintenant que vous savez tout amusez vous bien.
Hum, pour les bugs et remarques : maintainer CHEZ deb-indus POINT org



Valid HTML 4.01 Transitional