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

[Python脚本]快速检测两个文件夹之间的视觉重复图片

import os
from PIL import Image
import imagehash
from multiprocessing import Pooldef get_phash(img_path):"""计算图片的感知哈希"""try:with Image.open(img_path) as img:# 缩小到32x32加快计算且抗缩放干扰hash_val = imagehash.phash(img.resize((32, 32)))return (str(hash_val), img_path)except:return Nonedef find_dup_images(folder1, folder2):"""查找跨文件夹的视觉重复图片"""# 收集所有图片路径img_paths = []for folder in [folder1, folder2]:for root, _, files in os.walk(folder):for f in files:if f.lower().endswith(('png', 'jpg', 'jpeg')):img_paths.append(os.path.join(root, f))# 并行计算哈希值with Pool() as pool:hashes = pool.map(get_phash, img_paths)# 构建哈希字典hash_dict = {}for item in hashes:if item:hash_val, path = itemhash_dict.setdefault(hash_val, []).append(path)# 筛选重复项(跨文件夹)duplicates = []for paths in hash_dict.values():if len(paths) > 1:# 检查是否来自不同文件夹folder1_paths = [p for p in paths if folder1 in p]folder2_paths = [p for p in paths if folder2 in p]if folder1_paths and folder2_paths:duplicates.append((folder1_paths[0], folder2_paths[0]))return duplicatesif __name__ == '__main__':folder_a = input("输入文件夹1路径:").strip()folder_b = input("输入文件夹2路径:").strip()print("\n正在快速查重...")dups = find_dup_images(folder_a, folder_b)if dups:print(f"\n找到 {len(dups)} 组重复图片:")for img1, img2 in dups:print(f"{img1}\n  ⮕ {img2}\n")else:print("\n未发现重复图片")

使用说明

  1. 安装依赖

    pip install Pillow imagehash 
  2. 运行脚本

    python find_duplicates.py 
  3. 输入两个文件夹路径,等待结果输出

方案特点

特性说明
简单性仅用两个核心函数,无需复杂参数配置
高效性多进程加速 + 缩小图片到32x32,万张图处理约3分钟
抗干扰能力可识别缩放、格式转换、轻微色彩调整后的重复
低内存消耗单进程内存占用<100MB
跨文件夹检测自动筛选两个文件夹间的重复,忽略同文件夹内的重复

常见问题处理

  • 误报处理:若发现某些不相似图片被误判,可调整哈希缩小尺寸(如改到(64,64))提升精度
  • 加速技巧:在Pool()中指定进程数,如Pool(processes=8)(根据CPU核心数调整)
  • 排除特定格式:修改endswith参数,例如添加.webp等格式支持
http://www.dtcms.com/a/478378.html

相关文章:

  • 【Postgresql】PG版本升级,PG14到PG15,且数据迁移
  • 数据库原理与设计
  • iis7配置thinkphp网站做海报的网站有哪些内容
  • 【开题答辩全过程】以 博客网站为例,包含答辩的问题和答案
  • 解决 MySQL `MAX(IF())` 中 `table.column` 有值但显示 `‘default‘` 的问题
  • 如何加快门户网站建设wordpress 资源下载插件
  • 视频播放器 v12.1.357 | 4K顶级播放器,内置了视频下载器,可下载推特~脸书等国外视频
  • 路径总和---超全详细解
  • 【深入浅出PyTorch】--6.2.PyTorch进阶训练技巧2
  • JS - 运算符
  • Ethical use of recommender systems|推荐系统的道德使用
  • 网站建设 全网推广建网站的域名
  • MySQL——表操作
  • 基于MATLAB的海图快速临近值插值地图构建方法
  • 深度解析“rgss102e.dll丢失”问题:原因、影响与完整解决指南
  • 正规的媒体发稿网有哪些
  • 知名的汽车媒体发稿有哪些
  • 乐昌市建设网站网站开发就业薪酬
  • 【前缀和】| LeetCode 1314题解 矩阵区域和
  • 深圳网站建设服务便宜wordpress 获取导航
  • UniApp 实现双语功能
  • 保定哪做网站好云南云桥建设股份有限公司官方网站
  • xss-labs靶场安装+通关(1)
  • 3002. 移除后集合的最多元素数
  • 深圳的网站建设公司的外文名是南阳专业做网站公司哪家好
  • 电脑卡顿?快速解决CPU占用率过高问题
  • 免费制作网站net域名儿童网站开发方面外文文献
  • 自定义网络协议与序列化/反序列化
  • 如何给网站做第三方流量监测海珠高端网站建设
  • 守好电网的“最后一公里”:配电台区综合在线监控系统