1.查找重复图片

利用文件的MD5值可查找完全一样的重复图片

import os,time,hashlibdef getmd5(file):if not os.path.isfile(file):  return  fd = open(file,'rb')md5 = hashlib.md5()md5.update(fd.read())fd.close()return md5.hexdigest() if __name__ == "__main__":allfile = []md5list = []list_delete = []start = time.time()path = 'D:\\_PLAY\\新建文件夹\\'for filepath,dir,filelist in os.walk(path):for filename in filelist:allfile.append(os.path.join(filepath,filename))#根据MD5值比较for photo in allfile:md5sum = getmd5(photo)if md5sum not in md5list:md5list.append(md5sum)else:list_delete.append(photo)print('重复的照片有:',list_delete)#删除图片for i in range(len(list_delete)):os.remove(list_delete[i])

二.查找相似图片

本文采用四种哈希值进行比较:
1.感知哈希(perception hashing)
2.平均散列(average hashing)
3.梯度散列(difference hashing)
4.离散小波变换(wavelet hashing)

import os,imagehash
from PIL import Imagedef hash(path):highfreq_factor = 4 # resize的尺度hash_size = 32 # 最终返回hash数值长度image_scale = 64img_size = hash_size * highfreq_factorlist_file = []list_phash = []list_ahash = []list_dhash = []list_whash = []for file in os.listdir(path):if os.path.splitext(file)[1] == '.jpg':  path_file = os.path.join(path, file)  # 拼路径list_file.append(file)phash = imagehash.phash(Image.open(path_file),hash_size=hash_size,highfreq_factor=highfreq_factor)#感知哈希(perception hashing)ahash = imagehash.average_hash(Image.open(path_file),hash_size=hash_size)#平均散列(average hashing)dhash = imagehash.dhash(Image.open(path_file),hash_size=hash_size)#梯度散列(difference hashing)whash = imagehash.whash(Image.open(path_file),image_scale=image_scale,hash_size=hash_size,mode = 'db4')#离散小波变换(wavelet hashing)list_phash.append(phash)list_ahash.append(ahash)list_dhash.append(dhash)list_whash.append(whash)#print(list_hash)for i in range(len(list_file)):for j in range(i+1,len(list_file)):phash_value = 1-(list_phash[i]-list_phash[j])/len(list_phash[i].hash)**2ahash_value = 1-(list_ahash[i]-list_ahash[j])/len(list_ahash[i].hash)**2dhash_value = 1-(list_dhash[i]-list_dhash[j])/len(list_dhash[i].hash)**2whash_value = 1-(list_whash[i]-list_whash[j])/len(list_whash[i].hash)**2value_hash = max(phash_value,ahash_value,dhash_value,whash_value)if(value_hash > 0.9):#阈值设为0.9size_i = os.path.getsize(path + '\\' + list_file[i])size_j = os.path.getsize(path + '\\' + list_file[j])print(list_file[i],str(size_i/1024)+'KB')print(list_file[j],str(size_j/1024)+'KB')print(value_hash)print('***********************')if __name__ == '__main__':path = r'D:\_PLAY\新建文件夹\Excel\ALL_Daily'hash(path)

python查找相似图片或重复图片相关推荐

  1. python 查找excel表格中重复的信息并标出来

    Python之PyMuPDF--批量处理一个PDF文件中发票的总金额提取 python 查找excel表格中重复的信息并标出来 python 提取excel表格中指定的关键字 python 批量修改文 ...

  2. 【2021-12-06】爬取关键词图片 - 去掉重复图片

    ''' 爬取指定关键字图片 ''' import re # 正则表达式,解析网页 import requests # 请求网页 import traceback import osdef dowmlo ...

  3. python类似图片查找_python查找重复图片并删除(图片去重)

    本文实例为大家分享了python查找重复图片并删除的具体代码,供大家参考,具体内容如下 和网络爬虫配套的,也可单独使用,从网上爬下来的图片重复太多,代码支持识别不同尺寸大小一致的图片,并把重复的图片删 ...

  4. Python批量删除错误图片、修改文件名以及删除重复图片

    一.批量删除错误图片: 代码如下: import osfor name in range(1,150):with open('C:\\Users\\adimin\\Desktop\\Pixiv_Img ...

  5. 查找重复文件_快速查找、删除重复图片及文件!

    照片或者文件多了难免就会有重复,浪费硬盘空间的情况,下面让我们一起使用ACDSee 官方免费版软件删除你的重复图片及文件吧! 1. 打开软件,点击"工具"下的"查找重复项 ...

  6. 用 Python 实现哈希算法检测重复图片

    用 Python 实现哈希算法检测重复图片 - 简书 Python实现哈希算法,并检测图片重复的教程_Steven_ycs的博客-CSDN博客_python实现哈希

  7. 重复图片查找清理工具:Duplicate Photos Fixer Pro for Mac

    想要清理重复的照片?这款Duplicate Photos Fixer Pro for Mac能够帮到大家,这是一款能够快速检测那些重复图像,并将它们进行清理,从而释放出更多的空间.是一款十分好用的软件 ...

  8. python 查找损坏图片_使用Python查找损坏的图像

    python 查找损坏图片 赶上本系列: 第1部分:使用Python自动执行数字艺术家的重复任务 第2部分:针对数字艺术家的Python文件管理技巧 如果您正在计算机上处​​理图像,那么最终一定会遇到 ...

  9. Python查找目录下最大的指定个数的文件和图片

    在我们平时的运维过程中,在查找.筛选.删除等操作是比较频繁的,当你的服务器老是被某个大型文件或者大型日志而占用空间的话,是很让人心烦的,不好找,还容易把业务扰乱,下面,我用python编写了一个小程序 ...

  10. python检测图片相同部分_用 Python 实现哈希算法检测重复图片

    在 Python 中导入 hashlib 模块,调用函数就可以生成某一个字符串或者文件的哈希值.这个算法对于未被篡改的上传文件非常有效,如果输入数据有细微变化,加密哈希算法都会导致雪崩效应,从而造成新 ...

最新文章

  1. q160问题,www.q160.com,ie被篡改
  2. python 函数的定义与调用_Python函数定义和函数调用
  3. 专访.NET平台上类RoR开源项目Castle[转载]
  4. 世界定级 企业即时通讯软件
  5. hdu 5616 Jam's balance(dp 正反01背包)
  6. 最长公共子串(10分)
  7. pyodbc linux 乱码,python-无法在Linux上安装pyodbc
  8. Pycharm中如何将界面上的英文换为中文与Pycharm的背景设置与更换
  9. Ubuntu 系统备份为ISO
  10. latex表格过长的解决办法之一:缩小字体
  11. 买牛奶 (c++基础)
  12. 关于Sublime text3 配置及插件整理
  13. 大学生数码装备推荐,2022年值得入手的数码好物
  14. 使用Matlab2019b测试音频系统的频响(FreqResponse)与脉冲响应(ImpulseResponse)
  15. 【北亚数据恢复】DELL EqualLogic存储硬盘坏道数据恢复
  16. unity地面添加材质球_为Unity3D创建素材(1):图片、着色器、材质球
  17. Java安全-Tomcat AJP 文件包含漏洞(CVE-2020-1938)幽灵猫漏洞复现
  18. “困”在芯片里的小米、OV,为何集体踏上 ISP 芯赛道?
  19. springboot实现excel模板存入mysql数据库 附demo地址
  20. SQL Server 慢查询

热门文章

  1. 离线安装Python包的三种方法
  2. POS58打印机的操作
  3. duilib加载资源
  4. 深度学习目标检测之SSD网络(超级详细)
  5. Informatic学习总结_day03
  6. 一文熟练使用spring data jpa
  7. vue 富文本存储_vue 富文本编辑器 项目实战用法
  8. R语言数据分析报告 鲍鱼年龄预测
  9. 在校大学生研究生软著申请详解及模板下载
  10. 免费作图软件draw.io 软件输入数学公式和文本