深度学习中下载的gif图片判断及相同图片的判断方法 附代码

16 篇文章 0 订阅
3 篇文章 0 订阅

深度学习中下载的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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值