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

我正在运行一个 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')

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


慕田峪7331174
浏览 246回答 2
2回答

慕码人8056858

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

哔哔one

这两个图像不一样 - 只有成像的东西。正如您自己指出的那样,图像显然大小不同。因此,比较必须失败。您需要使用某种相似性检查。第一步是将较小的图像放大到较大的图像。然后,您需要采用某种方法来检测和定义相似性。有不同的方法和方法,它们的任何组合都可能是有效的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python