Image processing 从图像(命令行或代码)中删除除一种颜色以外的所有颜色
我想从图像中提取单一颜色,例如a87830,将其他颜色更改为白色。输入可能有点嘈杂,因此可以包括相近颜色的相邻像素。理想情况下,末端的所有非白色像素将转换为黑色,即输出为1位深度的图像 我可能想批处理这个,所以我希望有一个像imagemagick命令行这样的东西,或者我可以使用PHP imagemagick扩展来编写代码。我确信ImageMagick必须能够做到这一点,如果能够计算出正确的参数,这就是为什么我给它加了标签,但我对其他软件持开放态度,只要它能在Linux上工作 背景:我正在尝试为程序做第一个预处理阶段,这张图很好地显示了这一点:Image processing 从图像(命令行或代码)中删除除一种颜色以外的所有颜色,image-processing,imagemagick,Image Processing,Imagemagick,我想从图像中提取单一颜色,例如a87830,将其他颜色更改为白色。输入可能有点嘈杂,因此可以包括相近颜色的相邻像素。理想情况下,末端的所有非白色像素将转换为黑色,即输出为1位深度的图像 我可能想批处理这个,所以我希望有一个像imagemagick命令行这样的东西,或者我可以使用PHP imagemagick扩展来编写代码。我确信ImageMagick必须能够做到这一点,如果能够计算出正确的参数,这就是为什么我给它加了标签,但我对其他软件持开放态度,只要它能在Linux上工作 背景:我正在尝试为程
不确定这对你来说是否足够复杂。将所述颜色30%以内的所有相似像素转换为黑色,然后将其余像素转换为白色
convert in.png -fuzz 30% -fill black -opaque "#a87830" -threshold 10% out.png
通过添加更多不透明命令,您可以添加更多希望变为黑色的色调,如下所示
convert in.jpg -fuzz 20% -fill black \
-opaque "#a87830" \
-opaque "#a6725f" \
-threshold 1% out.png
这可能会让你减少模糊,从而消除其他你不想要的音调。这里有一个尝试:
convert \
http://i.stack.imgur.com/rK259.png \
-fuzz 33% \
-fill black \
-opaque "#A87830" \
-threshold 12% \
black+white.png
-fuzz参数使所有颜色与-ophable定义的颜色在一定范围内匹配。无模糊,您将只匹配这些像素,它们正好是A87830
阈值将颜色像素转换为黑色或白色,其中百分比定义了限制:上方变为黑色,下方变为白色
您可以将命令从-opaque修改为+opaque,以反转颜色选择的含义:它将替换不是此颜色的像素。这次我跳过-threshold参数以保留颜色:
convert \
http://i.stack.imgur.com/rK259.png \
-fuzz 33% \
-fill black \
+opaque "#FFFFFF" \
other.png
谢谢命令行中30%和10%的不同含义是什么?我希望会有类似的颜色,但只有在与目标颜色的像素相邻时才允许。这将允许jpeg/扫描仪的模糊性,但不包括您的示例中的黑色和紫色线条。30%意味着选择与a87830值的颜色距离在30%以内的像素。阈值为10%意味着将RGB值小于25,25,25(即255的10%)的所有像素设置为黑色,并将该值以上的所有像素设置为白色。因此,输出图像将是纯黑白的。我注意到,即使我将模糊和阈值降低到1%,我仍然可以从原始图像中获得所有的黑线。只有棕色的线条应该保留,所以黑色的线条应该像其他东西一样变成白色。。。。更改为使用+不透明a87830,然后使用-negate after-threshold效果很好。1%和5%的模糊度看起来同样好,但10%的模糊度包含了其他地图特征。到目前为止,仅在一张地图图像上进行了测试:它可能比典型的更干净……啊哈!从-opaque更改为+opaque几乎可以得到我想要的东西黑白是错误的,但我认为即使是我的ImageMagick skillz也可以解决这个问题。。。