linux和python区别_以python/linux的方式比较两个图像

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:25   1510   0

试图解决阻止上载重复图像的问题。

我有两个JPG。看着它们,我可以看到它们实际上是一样的。但由于某些原因,它们有不同的文件大小(一个是从备份中提取的,另一个是另一个上载的),因此它们有不同的md5校验和。

我怎样才能高效而自信地比较两幅图像,就像一个人能够看到它们是完全相同的一样?

更新

我写了这个剧本:import math, operator

from PIL import Image

def compare(file1, file2):

image1 = Image.open(file1)

image2 = Image.open(file2)

h1 = image1.histogram()

h2 = image2.histogram()

rms = math.sqrt(reduce(operator.add,

map(lambda a,b: (a-b)**2, h1, h2))/len(h1))

return rms

if __name__=='__main__':

import sys

file1, file2 = sys.argv[1:]

print compare(file1, file2)

然后我下载了两个视觉上完全相同的图像并运行脚本。输出:58.9830484122

有人能告诉我什么是合适的截止线吗?

更新II

a.jpg和b.jpg之间的区别在于,第二个文件是用PIL保存的:b=Image.open('a.jpg')

b.save(open('b.jpg','wb'))

这显然应用了一些非常轻质量的修改。我现在已经解决了我的问题,将相同的PIL save应用到正在上传的文件,而不做任何事情,现在它工作了!

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP