在shell脚本中,我想检查两个PNG图像是否不同,因为这两个图像的大小不同,或者一个图像的至少一个像素与另一个图像的相应像素具有不同的RGBA。
散列两个图像文件将不起作用,因为图像可能以不同的方式压缩,或者具有不同的注释,或者可能两个像素是完全透明的,但RGB分量不同,等等。
我知道如何使用ImageMagick的convert实用程序检查文件大小是否不同。至于比较像素值,我想使用ImageMagick的compare实用程序,但是如果命令成功处理,退出代码总是0:http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=22451
可以使用什么命令行测试来比较两个PNG图像的像素是否相等?或者,也许有一种方法可以使用compare?
发布于 2018-11-17 09:02:33
您不应使用ImageMagick compare中的退出代码。也就是说,compare函数已成功退出,没有任何错误。您想要报告来自比较的AE度量,它将告诉您有多少像素不同。或者使用一些其他度量,如MAE或RMSE。
compare -metric AE image1 image2 null:这将向终端返回一个值,即计数。
例如:
compare -metric AE lena.png lena.jpg null:
6510065100像素是不同的
您可以将其返回给变量,如下所示:
var=`compare -metric AE lena.png lena.jpg null: 2>&1`
echo $var
65100ImageMagick将其输出写入标准错误,这就是我添加2>&1的原因
看见
https://imagemagick.org/script/compare.php https://imagemagick.org/Usage/compare/
https://stackoverflow.com/questions/16150434
复制相似问题