去除同级目录下的重复图片

    技术2024-05-25  80

    去除同级目录下重复图片

    代码实现

    class Config(object): data_dir = './structure/' save_dir = './save/' isRename = True isRemove = False isSave = False import os import hashlib import numpy as np from PIL import Image from config import Config def remove_duplicated(data_dir, save_dir, isRename, isRemove, isSave): temp = set() count = 0 classes = os.listdir(data_dir) for cls in classes: files = os.listdir(data_dir + cls) for file in files: file_path = data_dir + cls + '/' + file # 获得完整的路径 rename_path = data_dir + cls + '/' + 'duplicated' + file img = Image.open(file_path) # 打开图片 img_array = np.array(img) # 转为数组 md5 = hashlib.md5() # 创建一个hash对象 md5.update(img_array) # 获得当前文件的md5码 if md5.hexdigest() not in temp: # 如果当前的md5码不在集合中 temp.add(md5.hexdigest()) # 则添加当前md5码到集合中 if isSave: img.save(save_dir + file) # 并保存当前图片到保存文件的路径 else: count += 1 # 否则删除图片数加一 if isRemove: os.remove(file_path) elif isRename: os.rename(file_path, rename_path) print('total duplicated images:', count) print('total non duplicated images', len(temp)) if __name__ == '__main__': opt = Config() remove_duplicated(opt.data_dir, opt.save_dir, opt.isRename, opt.isRemove, opt.isSave)

    ​功能介绍

    可以删除同级目录下的重复图片或者将重复图片重命名进行特殊标记保存所有不重复图片到指定文件夹下打印重复图片数量以及不重复图片数量

    使用说明

    示例代码数据结构:structure文件夹下有若干子文件夹,每个子文件夹下有若干待检测的图片,remove_duplicated.py以及config.py与structure文件夹同级在config.py中配置参数 数据路径(例如"./structure/",右侧含"/")保存路径(例如“./save/”,右侧含"/")是否删除重复图片(isRemove=True,删除)是否重命名重复图片(isRename=True,重命名)是否保存所有不重复图片(isSave=True,保存 )

    原理简介

    主要是通过判断图片与图片的md5值是否相同来确定两张图片是否重复

    知识推送

    MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

    此外

    原创内容转载请注明出处代码托管到我的GitHub可以点点 star关注我的 博客关注我的哔哩哔哩关注公众号:CV伴读社

    Processed: 0.029, SQL: 9