python自动化办公:批量去除电脑中的重复图像

我是智能取经人 2024-05-22 20:06:44

在数字化时代,我们经常会遇到图像文件大量堆积的情况,其中不乏重复的图片。这些重复的图片不仅占用了宝贵的存储空间,还使得文件管理和备份变得繁琐。为了解决这个问题,我们可以利用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函数中添加更多的逻辑。

最后,这个脚本并没有提供备份或撤销删除的选项,因此请确保在运行脚本之前备份你的图像文件,以防止误删除重要文件。

代码实战

我有一批图片,每张图片都被备份了两次,利用以上代码识别出重复图片

删除图片后,所有的图片都只剩下一张原图

1 阅读:123

我是智能取经人

简介:感谢大家的关注