首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python检查非常大的数据集中的重复图片?

如何使用Python检查非常大的数据集中的重复图片?
EN

Stack Overflow用户
提问于 2018-08-10 00:33:35
回答 1查看 930关注 0票数 2

我有一个包含百万级图像的数据集,我想做的是像Counter(<list of images>)一样检查重复项并计算整个数据集的数量。然而,考虑到图像的大小,将所有图像加载到内存中似乎是不可行的。那么,有没有办法做到这一点呢?我是否需要编写自己的散列函数和反向dict?

sha1编辑

我做了一些像这样的事情

代码语言:javascript
复制
image = Image.open("x.jpg") # PIL library
hashlib.sha1(image)

然后得到一个错误,比如

代码语言:javascript
复制
TypeError: object supporting the buffer API required

我现在该怎么做?

EN

回答 1

Stack Overflow用户

发布于 2018-08-10 08:49:55

正如所建议的,您可以使用任何散列函数,并使用它将图像文件摘要为二进制文件。然后将摘要保存在字典中,并使用它来计算重复项(如果愿意,也可以存储更多信息)。

在最基本的情况下,对于每个图像,您将执行以下操作:

代码语言:javascript
复制
import hashlib
filename = "x.jpg"
hashstr = hashlib.sha1(open(filename).read()).hexdigest()

这将在hashstr中返回十六进制字符串,如5fe54dee8f71c9f13579f44c01aef491e9d6e655

正如所指出的,这仅在文件级别的复制是逐字节的情况下才有效。如果你想剔除相同的图像,比如说在不同的分辨率或不同的维度下,hashlib函数是无能为力的,你需要找到一种不同的方法来确定相等

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51772023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档