通过读取二进制数据来比较Python中的图像

时间:2013-10-12 03:47:36

标签: python image compare

我想比较python中的图像,比如imageA.jpg和imageB.jpg。我是这样做的:

f = open('./imageA.jpg','rb')
imgA = f.read()
f.close()
f = open('./imageB.jpg','rb')
imgB = f.read()
f.close()
imagesEqual = imgA == imgB

最后一行基本上检查从两个图像文件读取的二进制数据的字符串相等性。 现在,很多stackoverflow问题和谷歌搜索建议使用像ImageChops或OpenCV这样的python模块。我这样做的方式不正确吗?如果是这样的话?

谢谢!

2 个答案:

答案 0 :(得分:0)

如果你想知道的只是它们是不同的,那么试试:

import filecmp
if filecmp.cmp(filename1, filename2, shallow=False):

来自In Python, is there a concise way of comparing whether the contents of two text files are the same?

答案 1 :(得分:0)

使用您的代码比较文件,而不是图像。如果你想比较图像的真实内容(像素值),你应该打开并加载这两个图像(imgA = Image.open('./ imageA.jpg'),imgA .load())并比较它们,因为有时两个相同图像的文件可以包含不同的标题,元数据......在这种情况下,图像是相同的但文件是不同的。