如何使用(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
。
答案 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)