2 回答

TA贡献1803条经验 获得超6个赞
您可以使用imagehash库来比较相似的图像。
from PIL import Image
import imagehash
hash0 = imagehash.average_hash(Image.open('quora_photo.jpg'))
hash1 = imagehash.average_hash(Image.open('twitter_photo.jpeg'))
cutoff = 5 # maximum bits that could be different between the hashes.
if hash0 - hash1 < cutoff:
print('images are similar')
else:
print('images are not similar')
由于图像不完全相同,因此会存在一些差异,因此我们使用具有可接受的最大差异的截止值。散列对象之间的差异是翻转的位数。但是即使图像被调整大小、压缩、不同的文件格式或调整了对比度或颜色,imagehash 也能工作。
哈希(或指纹,真的)来自图像的 8x8 单色缩略图。但即使使用如此减少的样本,相似性比较也能给出相当准确的结果。调整截止值以找到可接受的误报和漏报之间的平衡。
对于 64 位散列,0 的差异意味着散列是相同的。32 的差异意味着根本没有相似之处。64 的差异意味着一个散列是另一个的确切负数。

TA贡献1854条经验 获得超8个赞
这两个图像不一样 - 只有成像的东西。正如您自己指出的那样,图像显然大小不同。因此,比较必须失败。
您需要使用某种相似性检查。第一步是将较小的图像放大到较大的图像。然后,您需要采用某种方法来检测和定义相似性。有不同的方法和方法,它们的任何组合都可能是有效的。
添加回答
举报