首页 > 解决方案 > 使用 Imagemagick 仅显示所有非黑色、非白色像素

问题描述

我有一个(灰度)图像,它几乎完全是但不完全是双色调的。我想查看所有不完全是黑色或白色的像素。

如何使用 Imagemagick 做到这一点?


我想出了一种方法,我还是接受最好的另一种方法!]

标签: image-processingimagemagickimagemagick-convert

解决方案


如果您以加号“+”而不是破折号“-”开头,ImageMagick 或多或少地具有“-opaque”的反向版本。此命令会将所有纯白色和纯黑色像素更改为白色,并将所有其他像素更改为红色...

magick bw_img.png -colorspace rgb ^
  -fill white -opaque black -fill red +opaque white result.png

设置色彩空间后,第一个“-opaque”操作将用白色填充每个纯黑色像素。当然,所有的白色像素都已经是白色的了。

然后将填充颜色改为红色,“+不透明”操作会将每个不是纯白色的像素都用红色填充。

那是在 Windows 语法中。对于“nix 系统,该续行插入符“^”应更改为反斜杠“\”或将命令转换为单行。

对于 ImageMagick v6,将“magick”更改为“convert”。

编辑添加...

您使用“-transparent”的解决方案是有效的,并且可能是某些工作流程的最佳答案。请记住,有一个带有加号“+”的类似选项,您可以将其与“-transparent”运算符一起使用。举个例子,这将创建一个完全透明的输入图像版本......

magick logo: -background none -transparent red +transparent red result.png

首先它将每个纯红色像素变为透明,然后将所有不是纯红色的像素变为透明。


推荐阅读