当前位置:   article > 正文

深度学习中下载的gif图片判断及相同图片的判断方法 附代码_python判断元组中是否包含gif格式的图片

python判断元组中是否包含gif格式的图片

深度学习中下载的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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/287811
推荐阅读
相关标签
  

闽ICP备14008679号