您好,登錄后才能下訂單哦!
這篇文章主要介紹python怎么判斷文件夾內的重復圖片,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
1、步驟
如果要判斷文件夾中是否有相同的圖片,則需要對文件夾中的所有圖片進行分類,并逐一判斷兩張圖片是否相同。
如果文件夾中有1000張圖片,則第一張圖片需要與剩余的999張圖片進行比較,第二張圖片需要與剩余的998張圖片進行比較,第三張圖片需要與剩余的997張圖片進行比較,以此類推。
這個程序的做法是,首先將所有的圖片按照圖片大小(byte)進行分類,然后再進行分類比較。結果是:重復圖片很有可能連續出現(因為重復圖片大小相同)
2、實例
if __name__ == '__main__': load_path = 'E:\\測試圖片集(未去重)' # 要去重的文件夾 save_path = 'E:\\測試圖片集(重復照片)' # 空文件夾,用于存儲檢測到的重復的照片 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 dirname in dirnames: # print('parent is %s, dirname is %s' % (parent, dirname)) for filename in filenames: # print('parent is %s, filename is %s' % (parent, filename)) # print('the full name of the file is %s' % os.path.join(parent, filename)) 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 = [] for currIndex, filename in enumerate(file_list): dir_image1 = file_list[currIndex] dir_image2 = file_list[currIndex + 1] result = 比較兩張圖片是否相同(dir_image1, dir_image2) if(result == "兩張圖相同"): 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)
python的五大特點:1.簡單易學,開發程序時,專注的是解決問題,而不是搞明白語言本身。2.面向對象,與其他主要的語言如C++和Java相比, Python以一種非常強大又簡單的方式實現面向對象編程。3.可移植性,Python程序無需修改就可以在各種平臺上運行。4.解釋性,Python語言寫的程序不需要編譯成二進制代碼,可以直接從源代碼運行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。
以上是“python怎么判斷文件夾內的重復圖片”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。