URL: https://linuxfr.org/users/dtschump/journaux/support-de-la-webcam-dans-gmic-1400 Title: Support de la webcam dans G'MIC 1.4.0.0 Authors: David Tschumperlé Date: 2010年09月06日T13:49:13+02:00 Tags: webcam, g'mic et traitement_d'images Score: 29 Un peu plus d'un mois depuis la dernière version (1.3.9.0), voici une nouvelle release (1.4.0.0) de G'MIC ([http://gmic.sourceforge.net),](http://gmic.sourceforge.net),) ce système de traitement d'image pouvant s'utiliser en ligne de commande, ou sous forme (plus limitée) d'un greffon pour GIMP. Une des nouveautés intéressante de cette version 1.4.0.0 est le support de la webcam (via la bibliothèque OpenCV) : G'MIC peut maintenant acquérir des images (ou des séries d'images) de votre caméra, les traiter, les afficher, et faire un peu n'importe quoi avec. C'est très commode si l'on veut créer de petites démos interactives, pour illustrer l'effet de tel ou tel traitement/filtre/effet, à des fins pédagogiques par exemple. Je vous propose ici quelques démos plus ou moins compliquées d'utilisation de G'MIC avec la webcam. Pour en profiter, il vous faut installer les paquets 1.4.0.0 disponibles pour Debian/Ubuntu (méthode rapide), ou recompiler à partir des sources (méthode très lente), disponibles à cette adresse : [http://sourceforge.net/projects/gmic/files/](http://sourceforge.net/projects/gmic/files/) Je crois qu'il y a déjà un paquet 1.4.0.0 pour Archlinux également. L'idée, c'est de montrer quelques possibilités de ce sympathique logiciel, et d'essayer de vous persuader qu'on peut faire pas mal de choses avec (oui, oui, il faut absolument l'utiliser !) Pour commencer, voyons si la webcam fonctionne : gmic -apply_camera[(screenshot)](http://www.greyc.ensicaen.fr/~dtschump/lfr/gmic_camera.png) Si vous voyez votre bouille s'afficher dans une nouvelle fenêtre, tout va bien. Sinon, vous pouvez passer au journal suivant :) Cette nouvelle commande '-apply_camera' de G'MIC peut prendre comme argument une commande ou une série de commandes qui seront appliquées à chaque frame récupérée de la caméra. Par exemple : gmic -apply_camera \"-blur 10\"[(screenshot)](http://www.greyc.ensicaen.fr/~dtschump/lfr/gmic_blur.png) va afficher des images de la webcam lissées par un filtrage gaussien de variance 10 (les '\' devant les double quotes sont nécéssaires pour éviter que bash n'enlève ces dernières), sous réserve que votre machine soit suffisamment rapide (G'MIC est un langage interprété, ne l'oublions pas). On comprend dès lors l'intérêt de la chose, car on va pouvoir spécifier des commandes potentiellement compliquées comme argument de "-apply_camera". Par exemple, un effet psychédélique basé sur des effets mirroir peut être facilement obtenu avec : gmic -apply_camera \"--mirror x --mirror y -+ -/ 4\"[(screenshot)](http://www.greyc.ensicaen.fr/~dtschump/lfr/gmic_psyche.png) Le pipeline de traitement étant spécifié en langage de script, il est préférable d'avoir une machine relativement puissante pour espérer faire du temps réél (G'MIC n'utilise pas d'accélération liée aux GPU par exemple). Par exemple, il est probable que l'effet suivant commence à mettre votre machine mal à l'aise : gmic -apply_camera \"-stencilbw ,\"[(screenshot)](http://www.greyc.ensicaen.fr/~dtschump/lfr/gmic_stencilbw.png) Comme il est possible de faire beaucoup de choses sympathiques avec G'MIC, il est donc possible de faire beaucoup de démos sympathiques avec la webcam. Je vous livre ici quelques exemples plus "compliqués" (à noter que c'est compliqué car c'est réalisé 'from scratch', il suffit de définir des nouvelles commandes personnalisées pour rendre ça tout de suite moins effrayant). C'est juste pour vous donner quelques exemples possibles. (1) Visualisation de l'image comme une surface élevée en 3D : gmic -apply_camera \"--r[-1] 64,64,1,3 -blur 0.6 -elevation3d[-1] 0.09 -c3d[-1] -*3d[-1] 6 -rot3d[-1] 0,0,1,"{@|/100}" -rot3d[-1] 1,0,0,30 -m3d 3 -object3d[-2] [-1],50%,75%,0,0.8 -rm[-1]\"[(screenshot)](http://www.greyc.ensicaen.fr/~dtschump/lfr/gmic_surface.png) Pour ceux qui n'ont pas installés G'MIC, je rappelle que tout ceci bouge en temps réel en fonction de ce qui se passe devant la caméra. C'est sympathique non ? (2) Ajout d'un cube mappé qui bouge : gmic -apply_camera \"--r 50%,50%,1,3,3 -equalize[-1] 256 -n[-1] 0,255 -imagecube3d[-1] -*3d[-1] 200 -rot3d[-1] 1,1,2,"{@|/30}" -rot3d[-1] 2,1,1,"{@|/50}" -db3d 0 -m3d 3 -object3d[-2] [-1],"{50+30*cos(@|/800)}%,{50+30*sin(@|/760)}%",0,0.8 -rm[-1]\"[(screenshot)](http://www.greyc.ensicaen.fr/~dtschump/lfr/gmic_cube3d.png) (Ca ne sert à rien, mais c'est joli). (3) Visualisation des 3 composantes (R,G,B) d'une image : gmic -apply_camera \"-r 50%,50% --s c -channels[-2] -1,0 -channels[-1] -2,0 -append_tiles 2,2 -line 0,50%,100%,50%,1,0 -line 50%,0,50%,100%,1,0\"[(screenshot)](http://www.greyc.ensicaen.fr/~dtschump/lfr/gmic_rgb.png) (4) Visualisation des variations (en échelle log) : gmic -apply_camera \"-luminance -r 50%,50% -gradient_norm -+ 1 -log -t 10%,1 -n 0,255 -r 200%,200%\"[(screenshot)](http://www.greyc.ensicaen.fr/~dtschump/lfr/gmic_edges.png) (alien mode detected) (5) Visualisation d'un profile d'intensité RGB (ligne du milieu) : gmic -apply_camera \"-r 80%,80%,1,3,1 --lines 50% -s[-1] c -graph[-4] [-3],1,0,255,0,1,255,200,200 -graph[-4] [-2],1,0,255,0,1,200,255,200 -graph[-4] [-1],1,0,255,0,1,200,200,255 -rm[-3--1] -line[-1] 0,50%,100%,50%,0.3,255 -axes[-1] 0,100,100,0,1,255 -grid[-1] 32,32,0,0,0.1,0xCCCCCCCC,255\"[(screenshot)](http://www.greyc.ensicaen.fr/~dtschump/lfr/gmic_profile.png) (ou comment montrer qu'une image c'est aussi un signal) (6) Effet 'eau' : gmic -apply_camera \"-r 75%,75%,1,3 -water 10\"[(screenshot)](http://www.greyc.ensicaen.fr/~dtschump/lfr/gmic_water.png) (pour faire plaisir à mon poisson) (7) Enfin, (et encore un peu expérimental), en utilisant la fonction définie dans ce fichier : [http://www.greyc.ensicaen.fr/~dtschump/lfr/track.gmic](http://www.greyc.ensicaen.fr/~dtschump/lfr/track.gmic) , et en essayant : gmic track.gmic -track[(screenshot)](http://www.greyc.ensicaen.fr/~dtschump/lfr/gmic_track.png) on peut même faire un peu de suivi d'objets par la couleur (il faut d'abord cliquer sur l'objet à suivre pour donner la couleur de référence). Ici, c'est intéressant, car ça illustre le fait que G'MIC puisse intéragir facilement avec l'utilisateur. Ce dernier effet est *très* dépendant du type de caméra et des conditions de luminosité, mais ça marchotte un peu (assez en tout cas, pour illustrer le principe de base du tracking). Voilà, j'ai essayé d'illustrer le fonctionnement de webcam dans G'MIC avec des exemples assez variés. On peut penser à tout plein d'autres choses/démos. Si vous avez des idées, n'hésitez surtout pas à en faire partager tout le monde, il est peut être possible de le faire en G'MIC de manière très rapide. En espérant vous avoir donné envie de l'installer et d'en connaitre davantage. Bon appétit !