web-dev-qa-db-fra.com

Comment transformer une image en dessin animé à partir d'une ligne de commande?

Je voudrais créer cet effet de dessin animé à partir de photos simplement avec la ligne de commande.

Exemples d'effets souhaités:

  • enter image description here

Pouvez-vous décrire le processus ou donner quelques astuces pour obtenir cet effet de bande dessinée?

Info:

4
marcanuy

Comme vous l'avez peut-être déjà découvert, une caricature de filtres de postérisation provenant de diverses solutions de traitement d'image peut nécessiter un peu de peaufinage par rapport à la source d'origine avant que nous puissions obtenir des résultats similaires à ceux de vos exemples.

Deux solutions qui fonctionnent à partir de la ligne de commande peuvent vous donner des résultats proches de vos exemples, mais les résultats obtenus dépendent toujours beaucoup de l'image source utilisée.

ImageMagickInstall imagemagick

En utilisant l'outil convert ou mogrify, nous pouvons appliquer le filtre -Paint pour un style de dessin animé peint à plat à notre source:

convert -Paint <strength> <source> <output>

Remplacez <strength> par un entier pour spécifier la taille du pinceau. Plus le nombre de détails sera réduit. Sur votre exemple, j'ai utilisé une force de 4 pour le résultat suivant:

enter image description here

Trace aux graphiques vectoriels

On peut obtenir de meilleurs résultats que lors d'opérations bitmap en traçant le bitmap jusqu'à un graphique vectoriel en utilisant, par exemple, Inkscape. Nous pourrions alors aussi ajouter des traits ou adapter les couleurs obtenues pour mieux répondre à nos besoins.

Un traceur de ligne de commande peut être installé avec autotraceInstall autotrace .

Il y a beaucoup d'options pour ajuster les résultats obtenus avec autotrace. L'exemple ci-dessous a été généré avec ces options:

autotrace -color-count 6 -filter-iterations 8 -remove-adjacent-corners -output-format svg input.png > output.svg

enter image description here

4
Takkat

J'ai trouvé un bash script pour que imagemagick le fasse par Fred Weinhaus. Ses scripts sont disponibles gratuitement pour une utilisation non commerciale, UNIQUEMENT.

Utilisation de la ligne de commande:

USAGE: cartoon [-p pattern] [-n numlevels] [-m method] [-e edgeamount] 
[-b brightness] [-s saturation] infile outfile

USAGE: cartoon [-h or -help]

-p ... pattern ...... segmentation pattern (shape); 0<=integer<=100;
..................... default=70
-n ... numlevels .... number of desired segmentation levels; integer>=2;
..................... default=6
-m ... method ....... Edge method; 1 or 2; default=1
-e ... edgeamount ... amount of edges; float>=0; default=4
-b ... brightness ... brightness of cartoon; integer>=0; default=100
-s ... saturation ... saturation of cartoon; integer>=0; default=150

PURPOSE: To create a cartoon-like appearance to an image.

(plus sur le site lui-même.) Que fait le script ...

(Optionally) applies a median filter to the image
Reduces the number of colors in the filtered image
Converts the original image to grayscale
(Optionally) applies a median filter to the grayscale image
Applies a gradient Edge detector to the grayscale image
Thresholds the Edge image to binary
Composites the Edge image with the color reduced image

Il y a des exemples sur son site, mais ceux-ci ne sont pas à la hauteur de vos exemples. Vous aurez probablement besoin de jouer avec les paramètres pour que ce soit ce que vos images ressemblent.

7
Rinzwind