在ImageMagick命令行中将RGB转换为灰度

时间:2012-11-09 23:56:18

标签: imagemagick grayscale

如何使用(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

7 个答案:

答案 0 :(得分:71)

convert <img_in> -set colorspace Gray -separate -average <img_out>为我的任何图片提供了最佳效果。

答案 1 :(得分:9)

使用(r+g+b)/3方法将应用灰度效果,但图像将保留在sRGB(,这是此方法的预期行为)。您需要指定所需的colorspace以及-fx命令。

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

答案 2 :(得分:7)

批量转换Fish shell中的图片:

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

答案 3 :(得分:1)

似乎您正在使用红色通道来执行此操作 转换test.png -colorspace OHTA -channel r-单独+ channel gray_average.png 我更喜欢绿色频道(我听说这种方式可以在古代电视上使用,也许是最好的)

答案 4 :(得分:1)

我主要使用convert将文档的彩色图片转换为灰度pdf文档以执行OCR。我最好的结果是使用Rec709Luminance。所以我推荐

convert colourpicture.png -grayscale Rec709Luminance greyscalepicture.png

简短的命令,不错的输出。

答案 5 :(得分:0)

我将其用于灰度图像(从PNG转换)效果很好:

ls ./*.png | xargs -L1 -I {} convert {} -strip -interlace JPEG -sampling-factor 4:2:0 -gaussian-blur 0.05 -colorspace Gray -quality 20  {}.jpg

我将其用于扫描的黑白页面,使它们成为灰度图像(多余的参数清除了前一页的阴影):

ls ./*.png | xargs -L1 -I {} convert {} -strip -interlace JPEG -sampling-factor 4:2:0 -gaussian-blur 0.05 -colorspace Gray -quality 20 -density 300 -fill white -fuzz 40% +opaque "#000000" -density 300 {}.jpg 

答案 6 :(得分:0)