python 图片去重复 你值得拥有imagededup
现实中我们经常需要用到图像去重,比如为了扩充人脸图像,可以在百度、Google通过关键词下载大量人脸图像,但这些图像可能存在重复,在合并时需要去重。
开源地址:
https://github.com/idealo/imagededup
该库于今年4月份开源,已经有1600+颗星,最近两天还冲上了Github趋势榜。
可以使用 pip 直接安装:
pip install imagededup
仅需要 4 行代码即可实现图像去重:
from imagededup.methods import PHash phasher = PHash() # 生成图像目录中所有图像的二值hash编码 encodings = phasher.encode_images(image_dir='path/to/image/directory') # 对已编码图像寻找重复图像 duplicates = phasher.find_duplicates(encoding_map=encodings) # 给定一幅图像,显示与其重复的图像 from imagededup.utils import plot_duplicates plot_duplicates(image_dir='path/to/image/directory', duplicate_map=duplicates, filename='ukbench00120.jpg')
项目中应用实例
""" 图片去重 """ import os from imagededup.methods import PHash def process_file(img_path): """ 处理图片去重 :return: """ try: phasher = PHash() # 生成图像目录中所有图像的二值hash编码 encodings = phasher.encode_images(image_dir=img_path) # print(encodings) # 对已编码图像寻找重复图像 duplicates = phasher.find_duplicates(encoding_map=encodings) # print(duplicates) only_img = [] # 唯一图片 like_img = [] # 相似图片 for img, img_list in duplicates.items(): if ".png" in img: continue if img not in only_img and img not in like_img: only_img.append(img) like_img.extend(img_list) # 删除文件 for like in like_img: like_src = os.path.join(img_path, like) png_src = like_src[:-4] + ".png" if os.path.exists(like_src): os.remove(like_src) if os.path.exists(png_src): os.remove(png_src) except Exception as e: print(e) if __name__ == "__main__": img_path = "/tmp/t3/" num = 0 for root, dirs, files in os.walk(img_path): for dir in dirs: file_dir_path = os.path.join(root, dir) process_file(file_dir_path) num += 1 print("处理文件夹个数:{}".format(num))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
2020-03-23 flask mysql sqlalchemy教程
2018-03-23 Python获取时间范围内日期列表和周列表的函数
2018-03-23 python 集合比较(交集、并集,差集)集合方法大全