使用Imagemagick时,我想在输出图像上使用2种不同的颜色。我有一个带有“ Hello World”的原始图像。并在同一区域使用“ Hello Warcraft”修改图像。默认的compare命令会给我一张图像,并用红色标记所有差异。
现在,我想使用2种不同的颜色,例如将“ orld”标记为红色,将“ arcraft”标记为另一种颜色,也许是蓝色。 ImageMagick能够做到这一点吗?
如果没有,如何使用ImageMagick将指定的颜色转移到另一种颜色?
下面是示例。
然后我使用比较方式:compare imageA.png imageB.png imageC.png
然后图像C将是:
但是现在我只知道图像A和图像B之间有一些区别。所以我想在图像C上进行一些颜色编码,就像在图像D下方一样:
由此我可以知道哪些部分是相同的,绿色表示图像A上的差异,红色表示图像B上的差异。
答案 0 :(得分:2)
您可以在ImageMagick 6(Unix语法)中执行此操作。
ImageA:
ImageB:
convert img1.png img2b.png \
-define compose:args="0,1,-1,0.5" \
-compose mathematics -composite -auto-level \
\( xc:red xc:blue +append \) -clut diff.png
这是有偏差的差异。高于0.5或中间灰色(归一化的值)的任何一种将是对应于一张图像的一种颜色,低于0.5的任何事物将是与另一幅图像对应的另一种颜色。
对于ImageMagick 7,将其转换为magick。
添加:
给出新的输入图像。这是这样做的方法:
imageA:
imageB:
convert imageA.png imageB.png -write mpr:img +delete -fill white -colorize 80% \
\( mpr:img -compose minus -composite -threshold 0 -background red -alpha shape \) \
\( mpr:img +swap -compose minus -composite -threshold 0 -background blue -alpha shape \) \
-background none -compose over -flatten result.png
对不起,我用蓝色代替绿色。但是您可以根据需要进行更改。