我正在使用ImageMagick将图像转换为x和y笛卡尔坐标。我在命令行中使用的代码可以很好地使所有行显示为全黑,空格显示为全白。有没有办法过滤更多颜色?例如,如果图像由多种颜色组成,是否有办法使所有红色类型的颜色都为红色,所有蓝色类型的颜色都是蓝色,而其他非白色的颜色是黑色?然后背景将被视为完全白色(我用作白色背景上的图片的大多数图像)。命令行文本为:
将“imagename”转换为.png -white-threshold 50%-black-threshold 50%txt:
使用下面的Mark Setchell代码,我尝试转换我使用paint创建的基本图像来测试IM的能力。
我稍微编辑了代码,以便背景填充为白色而不是黑色;
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
然而,整个图像只显示白色。有什么提示吗?
答案 0 :(得分:1)
不完全确定你想要什么,但也许这会让我们更接近。所以,我们从这开始:
然后我们这样做,其中"将红色的10%以内的任何东西变成纯红色,25%的蓝色变成纯蓝色,依此类推" :
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
或者更像是这样:
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
那说...... "拍摄原始图像并在名为orig
的Magick Persistent Register中复制,然后删除原始图像。设置混合模式以选择每个位置的最亮像素,以用于将来的composite
命令。现在制作一个新图层,用原始图像填充,将红色的10%内的任何内容制作为红色,并使其他任何内容为黑色。现在对蓝色的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