为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪7331174 2021-07-02 14:59:06
我正在运行一个 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')尽管图像相同,但控制台没有打印“照片配置文件相同”,我该怎么办?

2 回答

?
慕码人8056858

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 的差异意味着一个散列是另一个的确切负数。


查看完整回答
反对 回复 2021-07-13
?
哔哔one

TA贡献1854条经验 获得超8个赞

这两个图像不一样 - 只有成像的东西。正如您自己指出的那样,图像显然大小不同。因此,比较必须失败。

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


查看完整回答
反对 回复 2021-07-13

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号