... Rei ...
... cjlmonster@163.com ...
... 白开水与方便面 ...
... Rei ...
... cjlmonster@163.com ...
... 白开水与方便面 ...
2021-07-01 约 128 字 预计阅读 1 分钟 Python
imagededup是一个基于Python的图片查重工具库,其利用散列算法,计算图片数据的重复项,并提供一些工具生成图片重复项快照
提供的算法库和对应的算法名字
算法 | |
---|---|
PHash | 感知哈希 |
AHash | 平均哈希 |
DHash | 差异哈希 |
WHash | 小波哈希 |
CNN | 卷积神经网络 |
$ pip install imagededup
如果安装超时的话,可以设置超时时间
pip install imagededup --timeout 6000
或更换国内源(推荐)
pip install imagededup -i https://mirrors.aliyun.com/pypi/simple/
拷贝源码仓库到本地
$ git clone https://github.com/idealo/imagededup.git
进入源码目录,通过setuptools安装
$ cd imagededup
$ python setup.py install
写demo前,先准备一些图片,这里存了一些图片在 anime 文件夹里
下面使用 感知哈希(PHash)算法,对图片 cvcv.jpg
进行重复项查询并生成快照
import os
# 导入哈希算法,对图片数据进行哈希编码
from imagededup.methods import PHash
# 导入图片查重工具,用于生成快照
from imagededup.utils import plot_duplicates
# 需要查重的图片所在文件夹
image_dir = 'c:/anime'
# 创建哈希算法对象,这里使用感知哈希(PHash)
_hash = PHash()
if __name__ == '__main__':
# 对 image_dir 文件里的所有图片进行编码
encodings = _hash.encode_images(image_dir=image_dir)
dedup_json = os.path.join(image_dir, 'dedup.json')
# 使用上面生成的编码,查找重复项,并把结果输出到 dedup.json
duplicates = _hash.find_duplicates(encoding_map=encodings, outfile=dedup_json)
# 需要查重的图片的名字
image = 'cvcv.jpg'
# 查重结果快照保存
dedup_shot = os.path.join(image_dir, 'dedup_shot.jpg')
# 查找指定图片的重复项并生成快照保存为 dedup_shot.jpg
plot_duplicates(image_dir=image_dir, duplicate_map=duplicates, filename=image, outfile=dedup_shot)
上述代码运行后,在c:/anime
文件里生成:
查重结果快照 dedup_shot.jpg
主题色
主色
强调色