我有两个源图像:
它们看起来是等价的,但是它们略有不同。因此,我创建了一个差异图像,其中每个图像的差异是彩色编码的(绿色和红色)。
我这样创建它:
convert first.png second.png \
\( -clone 0,1 -compose difference -composite \
-threshold 0 \) \
\( -clone 0 -clone 2 -compose minus -composite \
-threshold 0 -fill green1 -opaque white \
-channel rgba -fill none -opaque black \) \
\( -clone 1 -clone 2 -compose minus -composite \
-threshold 0 -fill red -opaque white \
-channel rgba -fill none -opaque black \) \
\( -clone 0,1 -evaluate-sequence mean \) \
-delete 0-2 \
-reverse \
-background none \
-compose over \
-flatten \
multicolor_difference.png
如此处建议:
http://www.imagemagick.org/discourse-server/viewtopic.php?t=26105
现在我想要不同的绿色和红色矩形的位置,以便我有一个可以在代码中使用的形状列表。
如果我将图像转换为文本
# ImageMagick pixel enumeration: 2880,1370,255,srgb
0,0: (0,255,0) #00FF00 lime
1,0: (0,255,0) #00FF00 lime
2,0: (255,255,255) #FFFFFF white
3,0: (255,255,255) #FFFFFF white
并遍历每个像素检查颜色是绿色还是红色,这当然是性能杀手。
有没有更好的方法在图像中搜索某些形状?即使检查某种颜色的出现也会是一个很大的改进。输出应该是文本,以便我可以在代码中解释它。
所以总而言之,我想以文本形式描述两个图像的差异。在最好的情况下,每个矩形只有 10 个输出。