当前位置: 首页 > article >正文

python用哈希删除文件夹中重复的图片

写在前面:删除的不完全精确,但是在可以接受的范围内,有误删的情况。所以,删之前,要备份!!!!windows下可用,linux修改文件夹即可!

安装包 pip install Pillow imagehash

代码

import os
from PIL import Image
import imagehash

def find_and_remove_duplicates(image_folder):
    seen_hashes = set()
    # 遍历文件夹中的所有文件
    for filename in os.listdir(image_folder):
        file_path = os.path.join(image_folder, filename)
        
        # 确保是文件并且是图像
        if os.path.isfile(file_path):
            try:
                # 打开图像并计算哈希值(使用 perceptual hash)
                img = Image.open(file_path)
                hash_value = imagehash.phash(img)
                
                # 检查哈希值是否已经存在
                if hash_value in seen_hashes:
                    # 如果存在,删除该文件
                    os.remove(file_path)
                    print(f"删除重复文件: {file_path}")
                else:
                    # 如果不存在,添加到集合中
                    seen_hashes.add(hash_value)
            except Exception as e:
                print(f"处理文件 {file_path} 时发生错误: {e}")

# 指定要检查重复的文件夹
image_folder = r"E:\delete"
find_and_remove_duplicates(image_folder)


http://www.kler.cn/a/401836.html

相关文章:

  • 《编程与艺术的交汇:Python Turtle 绘画与游戏制作》
  • Office-Tab-for-Mac Office 窗口标签化,Office 多文件标签化管理
  • 深度学习之目标检测的技巧汇总
  • webpack配置
  • 软件测试基础三十 (Python + Flask实现Mock平台搭建)
  • ### 哋它亢在5G基站中的应用:新兴技术与未来通信的融合
  • linux配置动态ip
  • 网络--网络层协议--IP
  • ARM CCA机密计算安全模型之生态
  • hhdb数据库介绍(9-24)
  • SpringBoot 增量部署发布(第2版)
  • Leetcode 寻找峰值
  • flink StreamGraph 构造flink任务
  • Blender vs 3dMax谁才是3D软件的未来?
  • 【Unity踩坑】Unity编辑器占用资源过高
  • SSH公钥有什么用?Windows 11操作系统上如何获取SSH公钥
  • 厦门凯酷全科技有限公司正规吗?
  • 【设计模式】行为型模式(三):责任链模式、状态模式
  • 【Python模拟websocket登陆-拆包封包】
  • 优化装配,提升品质:虚拟装配在汽车制造中的关键作用
  • 悬浮框前端效果查看与造数
  • 硬件工程师之电子元器件—二极管(10)之可变电容和TVS二极管
  • 从0开始学PHP面向对象内容之常用设计模式(建造者,原型)
  • 【PGCCC】PostgreSQL 数据库设计中的文本标识符 | 翻译
  • docker有哪些网络模式
  • 【计算机网络实验】之静态路由配置