ImageMagick比较2张图像,在输出图像上标有2种不同的颜色

时间:2019-08-26 09:45:04

标签: image imagemagick comparison difference

使用Imagemagick时,我想在输出图像上使用2种不同的颜色。我有一个带有“ Hello World”的原始图像。并在同一区域使用“ Hello Warcraft”修改图像。默认的compare命令会给我一张图像,并用红色标记所有差异。

现在,我想使用2种不同的颜色,例如将“ orld”标记为红色,将“ arcraft”标记为另一种颜色,也许是蓝色。 ImageMagick能够做到这一点吗?

如果没有,如何使用ImageMagick将指定的颜色转移到另一种颜色?

下面是示例。

Image A

Image B

然后我使用比较方式:compare imageA.png imageB.png imageC.png

然后图像C将是:

Image C

但是现在我只知道图像A和图像B之间有一些区别。所以我想在图像C上进行一些颜色编码,就像在图像D下方一样:

Image D

由此我可以知道哪些部分是相同的,绿色表示图像A上的差异,红色表示图像B上的差异。

1 个答案:

答案 0 :(得分:2)

您可以在ImageMagick 6(Unix语法)中执行此操作。

ImageA:

enter image description here

ImageB:

enter image description here

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


enter image description here

这是有偏差的差异。高于0.5或中间灰色(归一化的值)的任何一种将是对应于一张图像的一种颜色,低于0.5的任何事物将是与另一幅图像对应的另一种颜色。

请参见clutcompose mathematics

对于ImageMagick 7,将其转换为magick。

添加:

给出新的输入图像。这是这样做的方法:

imageA:

enter image description here

imageB:

enter image description here

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


enter image description here

对不起,我用蓝色代替绿色。但是您可以根据需要进行更改。