【发布时间】:2013-10-12 03:47:35
【问题描述】:
我想与 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 问题和谷歌搜索建议使用 Python 模块,如 ImageChops 或 OpenCV。我这样做的方式不正确吗?如果有,为什么?
谢谢!
【问题讨论】:
-
如果你想要精确的文件相等,那很好。如果您想允许一些差异(例如,
imageA中的 1 个像素比imageB中的相同像素轻一点),那么它当然没用 ;-) -
即使两个图像直到最后一个像素都完全相同,但如果某些标题(jfif,exif)不同,它们也不会相等。您不是在比较图形,而是在比较字节。
-
那么 2 张图片可以有相同的 exif/jiff 标头数据吗?如何比较仅是图像数据而不是文件头数据的字节?