1

我正在尝试使用 ImageMagick 去除一堆图像的背景。ImageMagick 网站记录了执行此操作的各种技术。他们还方便地编写了一个 shell 脚本bg_removal.sh,其中包含这些方法的首选组合。

我在脚本中遇到了错误。当你调用脚本时,你会给出几个模糊参数,加上你知道的特定背景颜色。传递明确的背景颜色,例如RGB(37,188,111),会产生最终命令的以下片段:

( +clone -sparse-color voronoi 0,0,RGB(37,188,111) )

..它工作正常。但是,如果您不传递 bgcolor,则表达式如下所示:

( +clone -sparse-color voronoi 0,0,%[fx:p{0,0}] )

它失败并显示有关 . 的参数数量错误的消息-sparse-color。我可以将其更改为不同的功能,并且可以正常工作:

( +clone -sparse-color voronoi 0,0,%[pixel:p{0,0}] )

我对 ImageMagick 知之甚少,不知道该fx功能在做什么以及是否pixel可以替代。我认为它正在寻找坐标 0,0 处的颜色来猜测背景颜色,但不完全确定。语法0,0,%[fx:p{0,0}]是否正确?

4

2 回答 2

3

-fx是一个运算符,可让您使用数学或 IM 特定表达式应用于像素:-fx 'expression'.

仅在 ImageMagick 版本 6.2.10 和之后的版本中引入,您可以在图像属性转义字符串中使用类似 '%[fx:...]' 的转义序列,用于将它们括在大括号中的特殊情况。所以这两种方法都应该在 v6.2.10 之后工作:

%[fx:expression]
%[pixel:expression]

至于您的问题:是的,“像素可以接受的替代品”

表达式的p{0,0}意思是:'返回当前图像左上角像素的颜色值'

所以检查你的 ImageMagick 版本:

 convert -version

至于为什么由于“参数数量错误”而导致完整表达式对您失败-sparse-color

  1. 检查是否voronoi是支持的方法之一-sparse-color

    convert -list sparse-color

    (我认为它是 - 否则您可能会看到不同的错误消息。)

  2. 的一般语法-sparse-color记录为:

    -sparse-color method 'x,y color ...'

    这表明您可能应该使用额外的引号来制作稀疏颜色以识别正确数量的参数。怎么样

    ( +clone -sparse-color voronoi '0,0 %[fx:p{0,0}]' )

    ??

于 2012-08-02T17:13:01.400 回答
0

我遇到了一个问题,尽管使用了 v7+,我的 fx 表达式也不起作用。我将命令从更改convertmagick,然后它开始工作。希望这可以帮助其他人免于将头撞到墙上。

于 2021-03-24T04:36:40.323 回答