首页 文章

如何在ImageMagick上过滤4种不同的颜色?

提问于
浏览 733
0

我正在使用ImageMagick将图像转换为x和y笛卡尔坐标 . 我在命令行中使用的代码可以很好地使所有行显示为完全黑色,空格显示为完全白色 . 有没有办法过滤更多颜色?例如,如果图像由多种颜色组成,是否有办法使所有红色类型的颜色都为红色,所有蓝色类型的颜色都是蓝色,而其他非白色的颜色是黑色?然后,背景将被视为完全白色(我用作白色背景上的图片的大多数图像) . 命令行文本是:

转换“imagename”.png -white-threshold 50%-black-threshold 50%txt:

使用下面的Mark Setchell的代码,我试图转换我使用paint创建的基本图像来测试IM的能力 .

enter image description here

我稍微编辑了代码,以便背景填充为白色而不是黑色;

convert q.png -write MPR:orig -delete 0 -compose lighten ^ ( MPR:orig -fuzz 10% -fill red  -opaque red  -fill white +opaque red  ) ^ ( MPR:orig -fuzz 10% -fill blue -opaque blue -fill white +opaque blue ) -composite ^ ( MPR:orig -fuzz 10% -fill lime -opaque lime -fill white +opaque lime ) -composite ^ f.png

但是,整个图像只显示白色 . 有小费吗?

1 回答

  • 1

    不完全确定你想要什么,但也许这会让我们更接近 . 所以,我们从这开始:

    enter image description here

    然后我们这样做,其中说"make anything within 10% of red into solid red, anything within 25% of blue into solid blue, and so on":

    convert start.png  -fuzz 10%  \
       -fill red   -opaque red    \
       -fuzz 25%                  \
       -fill blue  -opaque blue   \
       -fill lime  -opaque lime   \
       -fill white -opaque white result.png
    

    enter image description here


    或者更像这样:

    convert start.png -write MPR:orig -delete 0 -compose lighten \
       \( MPR:orig -fuzz 10% -fill red  -opaque red  -fill black +opaque red \) \
       \( MPR:orig -fuzz 20% -fill blue -opaque blue -fill black +opaque blue \) -composite \
       \( MPR:orig -fuzz 30% -fill lime -opaque lime -fill black +opaque lime \) -composite \
       result.png
    

    enter image description here

    那说......“拍摄原始图像并在Magick Persistent Register中复制一个名为 orig 的副本然后删除原始图像 . 设置混合模式以选择每个位置最亮的像素以用于任何未来的 composite 命令 . 现在创建一个新图层,用原始图像填充它,使红色的10%以内的任何东西变成纯红色 and make anything else black . 现在对蓝色的20%内的颜色做同样的事情,并采用较浅的层混合 - 所以蓝色和红色显示而不是黑色,这将始终对于石灰来说再做同样的事情 - 这就是 ImageMagick 指的是纯绿色 . “”

    注意绿色如何大于蓝色,而蓝色又大于红色,因为我应用的模糊量不同 - 即30%,20%10% .


    我认为使用Windows风格的引用看起来像这样:

    convert start.png -write MPR:orig -delete 0 -compose lighten ^
    ( MPR:orig -fuzz 10% -fill red  -opaque red  -fill black +opaque red  ) ^
    ( MPR:orig -fuzz 20% -fill blue -opaque blue -fill black +opaque blue ) -composite ^
    ( MPR:orig -fuzz 30% -fill lime -opaque lime -fill black +opaque lime ) -composite ^
    result.png
    

相关问题