2014-12-09 72 views
0

我想比较两张图片并知道它们之间的差异百分比。我在覆盆子pi和python语言上使用raspbian。我发现了PIL和magickimage,但与magick图像我无法找到这个功能和PIL我有奇怪的结果。比较2张图片并找到%差异

对于泌我使用以下代码:

h1 = image1.histogram() 
h2 = image2.histogram() 
rms = math.sqrt(reduce(operator.add,map(lambda a,b: (a-b)**2, h1, h2))/len(h1)) 

当我需要两个图片(无差异)与INTERVALL 0.5秒我有这样的结果:RMS = 4743.766 ....如果我在之间移动两张图片我有rms:4699.288 ..... 所以它不会使两个“相同”图像之间的差异,当我移动:/

+0

什么,确切地说,*“奇怪的结果”*是什么意思?代码在哪里,它到底是什么问题/ – jonrsharpe 2014-12-09 11:47:45

+0

我编辑它:) 对不起 – user3466795 2014-12-09 11:59:59

回答

1

使用compare这是ImageMagick的一部分。就像这样:

compare -metric AE image1.png image2.png null: 

AE给出了绝对误差,在像素差数的计数的条款。您也可以使用MAE(平均绝对误差)或PAE(绝对误差峰值)或RMSE(均方根误差)。您还可以添加一个fuzz因素,允许在像素值的细微差别是这样的:

compare -fuzz 10% -metric AE image1.png image2.png null: 

如果你想在一个shell变量的答案,说ndiff,你可以这样做:

ndiff=`compare -fuzz 10% -metric AE image1.png image2.png null: ` 
echo $ndiff 
+0

我在linux非常糟糕。在控制台中没关系,它给了我一个值,但我不知道如何在脚本中编写它。我试过: diff = compare -metric AE image1.png image2.png null print(diff) 但是他说“AE”上有错误 这很奇怪,因为它在控制台中运行良好。非常感谢您的帮助 – user3466795 2014-12-09 12:12:21

+0

我会更新答案...坚持下去。 – 2014-12-09 12:13:06

+0

这在$上似乎是无效的语法。因此脚本无法执行:/ – user3466795 2014-12-09 12:24:42