web-dev-qa-db-ja.com

ImageMagickコマンドラインでRGBをグレースケールに変換する

(r + g + b)/ 3メソッドを使用して、RGB画像(3チャンネル)をグレースケールに変換するにはどうすればよいですか?例のページに目を通します: http://www.imagemagick.org/Usage/color_mods/#grayscale しかし、望ましい方法:

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

私に間違った結果を与えました-結果の画像にはまだ3つのチャンネルがあります。

これを確認するには、次のコマンドを実行します:identify -format "%[colorspace] <== %f\n" *.png

47
egor7

convert <img_in> -set colorspace Gray -separate -average <img_out>は、私にとってどんな画像に対しても最高の結果をもたらします。

79
egor7

(r+g+b)/3メソッドを使用すると、グレースケールの効果が適用されますが、画像はsRGB(のままになります。これは、このメソッドで予期される動作です) 。 -fxコマンドとともに、目的の colorspace を指定する必要があります。

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

identify -format "%[colorspace] <== %f\n" gray_fx_average.pngで確認

Gray <== gray_fx_average.png
12
emcconville

Fish Shellで画像をバッチ変換するには:

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

8
Paul Wenzel