68

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

4

8 回答 8

118

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

于 2012-11-21T15:05:54.643 回答
18

使用该(r+g+b)/3方法将应用灰度效果,但图像将保持 sRGB(这是该方法的预期行为)。您需要与命令一起指定所需的色彩空间-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
于 2012-11-12T15:05:07.917 回答
14

Fish shell 中批量转换图像:

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

于 2015-10-16T19:10:58.207 回答
10

Imagemagick 命令行中的几种方法是:

convert test.png -grayscale average gray_average.png

or

convert test.png -colorspace OHTA -channel r -separate +channel gray_average.png

or

convert test.png -intensity average -colorspace gray gray_average.png

or

convert test.png -colorspace HSI -channel blue -separate +channel gray_average.png


https://imagemagick.org/script/command-line-options.php#grayscale https://imagemagick.org/script/command-line-options.php#intensity https://imagemagick.org/script/command- line-options.php#colorspace

于 2019-10-12T17:55:20.800 回答
1

好像您正在使用红色通道来执行此操作,在 convert test.png -colorspace OHTA -channel r -separate +channel gray_average.png 我更喜欢绿色通道(我听说这种方式适用于古代电视,也许是最好的)

于 2020-07-27T14:41:21.600 回答
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 
于 2019-10-12T10:27:43.073 回答
0

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

convert colourpicture.png -grayscale Rec709Luminance greyscalepicture.png

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

于 2020-08-20T09:05:01.090 回答
0

我在将sRGB颜色空间转换为灰色颜色空间时遇到了问题。我必须在转换之前手动删除Alpha通道。在其他情况下,图像将保持 sRGB。

convert image_original.tga -alpha off -set colorspace Gray image_converted.tga
于 2021-09-12T11:23:10.733 回答