去除目录下重复图片(去重)
训练集图片有太多重复图片,于是需要去重
import cv2 import os from collections import defaultdict def dhash(image, hash_size=8): """ 计算图片的差异哈希值 """ # 调整图片大小,并多加一列以便计算水平梯度 resized = cv2.resize(image, (hash_size + 1, hash_size)) # 计算相邻列像素之间的相对水平梯度 diff = resized[:, 1:] > resized[:, :-1] # 将差异图片转换为哈希值 return sum([2 ** i for (i, v) in enumerate(diff.flatten()) if v]) def find_duplicates(folder_path): """ 找到文件夹中的重复图片 """ hashes = defaultdict(list) duplicates = [] # 遍历文件夹中的图片文件 for filename in os.listdir(folder_path): if filename.endswith(('.png', '.jpg', '.jpeg', '.bmp', '.gif')): filepath = os.path.join(folder_path, filename) image = cv2.imread(filepath, cv2.IMREAD_GRAYSCALE) if image is None: continue h = dhash(image) hashes[h].append(filepath) # 找到哈希值相同的图片 for h, files in hashes.items(): if len(files) > 1: duplicates.append(files[1:]) # 保留每组重复图片中的第一张,记录其余的图片 return duplicates def delete_duplicates(folder_path): """ 删除文件夹中的重复图片,只保留每组中的一张 """ duplicates = find_duplicates(folder_path) for group in duplicates: for file in group: os.remove(file) print(f"已删除重复文件: {file}") if __name__ == "__main__": folder_path = "./data" # 替换为你的图片文件夹路径,图片名不要带中文 delete_duplicates(folder_path)
本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/18223875
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2023-05-31 python中faker库(伪造数据)