天天看點

python自動化辦公:批量去除電腦中的重複圖像

作者:人工智能取經人

在數字化時代,我們經常會遇到圖像檔案大量堆積的情況,其中不乏重複的圖檔。這些重複的圖檔不僅占用了寶貴的存儲空間,還使得檔案管理和備份變得繁瑣。為了解決這個問題,我們可以利用Python編寫一個腳本來自動檢測和删除重複的圖像檔案。

準備工作

在開始編寫代碼之前,我們需要確定已經安裝了Python環境,并安裝了一個用于比較圖像相似度的庫,如imagehash和Pillow(PIL的分支)。這兩個庫可以幫助我們生成圖像的哈希值,并基于這些哈希值來比較圖像的相似性。

你可以使用pip來安裝這兩個庫:

pip install imagehash pillow           

編寫代碼

下面是一個簡單的Python腳本,用于查找并删除重複的圖像檔案:

import os  
import imagehash  
from PIL import Image  
from itertools import combinations  
  
def image_hash(file_path):  
    hash_object = imagehash.average_hash(Image.open(file_path))  
    return hash_object  
  
def find_duplicate_images(directory):  
    images = [f for f in os.listdir(directory) if os.path.isfile(os.path.join(directory, f)) and f.lower().endswith(('.png', '.jpg', '.jpeg', '.gif', '.bmp'))]  
    hashes = {f: image_hash(os.path.join(directory, f)) for f in images}  
      
    duplicates = []  
    for img1, img2 in combinations(images, 2):  
        if hashes[img1] - hashes[img2] < 5:  # 設定一個門檻值來判斷是否相似  
            duplicates.append((img1, img2))  
      
    return duplicates  
  
def remove_duplicates(directory, duplicates):  
    for img1, img2 in duplicates:  
        # 假設我們保留第一個檔案,删除第二個檔案  
        os.remove(os.path.join(directory, img2))  
        print(f"Removed duplicate: {img2}")  
  
# 使用示例  
directory = 'path/to/your/image/directory'  # 替換為你的圖像目錄  
duplicates = find_duplicate_images(directory)  
remove_duplicates(directory, duplicates)           

注意:這個腳本使用了簡單的平均雜湊演算法來比較圖像,并設定了一個門檻值(在這個例子中是5)來判斷兩個哈希值是否足夠接近,進而認為圖像是相似的。然而,這種方法的準确性可能因圖像品質和内容的複雜性而有所不同。你可能需要根據你的具體需求來調整這個門檻值。

此外,這個腳本會删除所有相似的圖像中的第二個圖像,保留第一個圖像。如果你想要更複雜的邏輯(例如,隻删除完全相同的圖像,或者基于某種政策來選擇要保留的圖像),你需要在remove_duplicates函數中添加更多的邏輯。

最後,這個腳本并沒有提供備份或撤銷删除的選項,是以請確定在運作腳本之前備份你的圖像檔案,以防止誤删除重要檔案。

代碼實戰

python自動化辦公:批量去除電腦中的重複圖像

我有一批圖檔,每張圖檔都被備份了兩次,利用以上代碼識别出重複圖檔

python自動化辦公:批量去除電腦中的重複圖像

删除圖檔後,所有的圖檔都隻剩下一張原圖

python自動化辦公:批量去除電腦中的重複圖像

繼續閱讀