如何检查具有不同像素化的两个图像的相似性

问题描述 投票:6回答:2

我正在运行python代码来检查Quora和Twitter用户个人资料照片的相似性,但是当图像相同时我没有得到肯定的结果。

这是用于比较两个图像的代码:

path_photo_quora= "/home/yousuf/Desktop/quora_photo.jpg"
path_photo_twitter="/home/yousuf/Desktop/twitter_photo.jpeg"
if open(path_photo_quora,"rb").read() == open(path_photo_twitter,"rb").read():
     print('photos profile are identical')

尽管图像相同,但控制台未打印“照片配置文件相同”,我该怎么办?

python image-processing user-profile image-scaling image-comparison
2个回答
15
投票

您可以使用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

if hash0 - hash1 < cutoff:
  print('images are similar')
else:
  print('images are not similar')

由于图像不完全相同,会有一些差异。但是,即使重新调整图像大小,压缩图像,使用不同的文件格式或调整了对比度或颜色,imagehash仍然可以使用。

哈希(或指纹,实际上)是从图像的8x8单色缩略图派生的。但是,即使样本减少了,相似度比较也可以得出非常准确的结果。调整截止值以在假阳性和假阴性之间找到可接受的平衡。


2
投票

这两个图像不同-仅是所成像的东西。正如您所注意到的,图像的大小显然不同。因此,比较必须失败。

您需要使用某种相似性检查。第一步是将较小的图像放大到较大的图像。然后,您需要采用某种手段来检测和定义相似性。有不同的方式和方法,它们的任何组合都可能有效。

例如,请参见Checking images for similarity with OpenCV

© www.soinside.com 2019 - 2024. All rights reserved.