赞
踩
深度学习中下载的gif图片判断及相同图片的判断方法
在深度学习中需要找很多数据集,但是有些数据集存在重复或混杂着gif图片,那我们怎么处理呢?
# """
# 如果文件夹中有100张图片,则第一张图片需要与剩余的99张图片进行比较,第二张图片需要与剩余的98张图片进行比较,
# 第三张图片需要与剩余的97张图片进行比较,以此类推。
# """
import os
import cv2
import numpy as np
import shutil
if __name__ == '__main__':
load_path = r'.\wenjian1' # 要去重的文件夹
save_path = r'.\wenjian2' # 空文件夹,用于存储检测到的重复的文件
os.makedirs(save_path, exist_ok=True)
# 获取图片列表 file_map,字典{文件路径filename : 文件大小image_size}
file_map = {}
image_size = 0
# 遍历filePath下的文件、文件夹(包括子目录)
for parent, dirnames, filenames in os.walk(load_path):
for filename in filenames:
image_size = os.path.getsize(os.path.join(parent, filename))
file_map.setdefault(os.path.join(parent, filename), image_size)
# 获取的图片列表按 文件大小image_size 排序
file_map = sorted(file_map.items(), key=lambda d: d[1], reverse=False)
file_list = []
for filename, image_size in file_map:
file_list.append(filename)
# 取出重复的图片
file_repeat = []
#取出gif的图片
empty_list = []
for currIndex, filename in enumerate(file_list):
if currIndex>=len(file_list)-1:
print('超出索引范围!!!')
pass
else:
dir_image1 = file_list[currIndex]#[currIndex]
dir_image2 = file_list[currIndex+1]#[currIndex + 1]
print(dir_image2)#输入错误的图片格式gif等
dir_image1 = cv2.imread(dir_image1)
dir_image2 = cv2.imread(dir_image2)
if np.max(dir_image1) is None:# np.max(dir_image1)判断图片是否为空
empty_list.append(file_list[currIndex])
pass
elif np.max(dir_image2) is None:# np.max(dir_image2)判断图片是否为空
empty_list.append(file_list[currIndex + 1])
pass
else:
dir_image1 = cv2.resize(dir_image1,(248,248))#统一图片像素大小
dir_image2 = cv2.resize(dir_image2,(248,248))#统一图片像素大小
difference = cv2.subtract(dir_image1 , dir_image2)
result = not np.any(difference) #if difference is all zeros it will return False
# result = 比较两张图片是否相同(dir_image1, dir_image2)
if result is True:
file_repeat.append(file_list[currIndex + 1])
print("\n相同的图片:", file_list[currIndex], file_list[currIndex + 1])
else:
print('\n不同的图片:', file_list[currIndex], file_list[currIndex + 1])
currIndex += 1
if currIndex >= len(file_list)-1:
break
# 将重复的图片移动到新的文件夹,实现对原文件夹降重
for image in file_repeat:
shutil.move(image, save_path)
print("正在移除重复照片:", image)
for error in empty_list:
print("gif文件有:", error)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。