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/
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)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)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)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)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)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)(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)(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)(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)(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)(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 , et en essayant :
gmic track.gmic -track
(screenshot)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 !
# GIF ou MNG
Posté par rewind (Mastodon) . Évalué à 3.
En tout cas, bravo, les screenshots sont très bien, et le logiciel doit l'être également (même si je n'en sais rien vu que je ne l'ai jamais utilisé, mais j'adore suivre les nouvelles de ce logiciel). Et le poisson ressemble drôlement à un cochon de face :P
[^] # Re: GIF ou MNG
Posté par Sylvain Sauvage . Évalué à 3.
# syntaxe...
Posté par Nicolas Boulay (site web personnel) . Évalué à 4.
"La première sécurité est la liberté"
[^] # Re: syntaxe...
Posté par David Tschumperlé (site web personnel) . Évalué à 2.
[^] # Re: syntaxe...
Posté par cosmocat . Évalué à -2.
[^] # Re: syntaxe...
Posté par Jean-Philippe Garcia Ballester (site web personnel) . Évalué à 6.
[^] # Re: syntaxe...
Posté par David Tschumperlé (site web personnel) . Évalué à 1.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 3.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: syntaxe...
Posté par Rémi Birot-Delrue . Évalué à -6.
[^] # Re: syntaxe...
Posté par Rémi Birot-Delrue . Évalué à 0.
Vendredi, c'est permis.
[^] # Re: syntaxe...
Posté par zerchauve . Évalué à 3.
tu devrais ptet baiser un bisounours, ou alors ecrire un journal polémique (qui raconterait l'avortement d'un faf de radio courtoisie) ptet ca te détendrait.
sinon pour ton apparente aversion des universitaires j'ai le numéro de tel de Mireille Dumas stuveux.
[^] # Re: syntaxe...
Posté par Rémi Birot-Delrue . Évalué à -1.
[^] # Re: syntaxe...
Posté par David Tschumperlé (site web personnel) . Évalué à 2.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 1.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: syntaxe...
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 3.
(track v ((h 0) (s 0) (v 0))
(do-while
(begin
camera
(blur -1 1) (n -1 0 255) (rgb2hsv -1))
(shared -1 0 0) (n -1 0 100) (rm -1)
(shared -1 1 1) (n -1 0 16) (rm -1)
(shared -1 2 2) (n -1 0 0) (rm -1)
(if (@{!,b}\&1)
(begin
(set! x @{!,x})
(set! y @{!,y})
(set! h @{-1,($x,$y,0,0)})
(set! s @{-1,($x,$y,0,1)})
(set! v @{-1,($x,$y,0,2)}))
(select_color -1 3 $h $s $v)
(erode -1 8)
(dilate -1 8))
(w2 -1)
...))
Avec du code à la scheme/lisp (pourquoi pas du scheme, avec Guile, le langage d'extension GNU ?), on doit pouvoir faire un truc plus lisible, et surtout, plus facile à éditer/créer.
On peut même imaginer des bonnes macros pour faciliter la factorisation et génération de scripts.
>> Donc, pourquoi faire mieux si personne n'en a l'utilité.
Parce que faire mieux peut inciter les gens à s'amuser avec.
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 2.
Ce commentaire a été supprimé par l’équipe de modération.
[^] # Re: syntaxe...
Posté par David Tschumperlé (site web personnel) . Évalué à 0.
Je trouve pas la version du commentaire ci dessous plus lisible pour ma part. G'MIC est effectivement basé sur une syntaxe type 'ligne de commande', et je vois pas trop le problème (si pour toi c'est un problème, passe sous Windows).
Tes préjugés c'est bien gentil, mais comme le post précédent, tu n'as pas d'argumentation ("y a pas à discuter" c'en est pas une), ça vaut rien, et tu ferais mieux de te taire sinon ça fait du bruit pour rien. C'est du niveau de "Le PSG ça pue" ou "Aux chiottes l'OM".
Quand on a rien à dire de plus intéressant que ce que tu viens de dire, on s'abstient.
[^] # Re: syntaxe...
Posté par Nicolas Boulay (site web personnel) . Évalué à 3.
Là, cela devient vraiment cryptique. Je veux bien que la ligne de commande soit puissante, mais de là à rajouter des notions de boucle et de conditionnel... Si on reste en Unix, les pipes et le langage shell sont fait pour cela.
"La première sécurité est la liberté"
[^] # Commentaire supprimé
Posté par Anonyme . Évalué à 2.
Ce commentaire a été supprimé par l’équipe de modération.
# Avatar
Posté par Zied . Évalué à 3.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.