web-dev-qa-db-fra.com

Convertir RVB en niveaux de gris dans la ligne de commande ImageMagick

Comment convertir une image RVB (3 canaux) en image en niveaux de gris, en utilisant la méthode (r + g + b)/3? Je regarde à travers une page d'exemples: http://www.imagemagick.org/Usage/color_mods/#grayscale mais la méthode souhaitée:

convert test.png -fx '(r+g+b)/3' gray_fx_average.png

m'a donné un mauvais résultat - l'image résultante a encore 3 canaux.

Vous pouvez le vérifier en exécutant une commande: identify -format "%[colorspace] <== %f\n" *.png.

47
egor7

convert <img_in> -set colorspace Gray -separate -average <img_out> donne le meilleur résultat pour n'importe quelle image pour moi.

79
egor7

En utilisant le (r+g+b)/3 la méthode appliquera les effets des niveaux de gris, mais l'image restera en sRGB ( qui est le comportement attendu pour cette méthode ). Vous devrez spécifier le espace colorimétrique ainsi que le -fx commande.

convert test.png -fx '(r+g+b)/3' -colorspace Gray gray_fx_average.png

Vérifiez avec identify -format "%[colorspace] <== %f\n" gray_fx_average.png

Gray <== gray_fx_average.png
12
emcconville

Pour convertir des images par lots dans Fish Shell:

for file in *.jpg; convert -colorspace Gray $file $file; end;

8
Paul Wenzel