Python-计算md5值对图片去重
MD5简介
MD5 即 Message-Digest Algorithm 5(信息-摘要算法5)。摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。MD5 是从MD2、MD3 和 MD4 发展而来的一种加密算法,其主要通过采集文件的信息摘要,以此进行计算并加密。通过MD5算法进行加密,文件就可以获得一个唯一的 MD5 值,这个值是独一无二的,就像我们的指纹一样。如果任何人对文件做了任何改动,其 MD5 值也就是对应的“数字指纹”都会发生变化。
图片去重实例
我们可以计算图片的 md5 值。若几张图片完全相同,则其 md5 值也完全相同,此时可以根据 md5 值是否相同来对图片进行去重处理。
以电脑F盘找中 images 文件夹为例,对其各个子文件夹内的图片进行去重。
Python程序
Python 的 hashlib 提供了常见的摘要算法,如MD5,SHA1等。
import os
from hashlib import md5def main():path = 'F:/images'f = open('F:/images/md5.txt', 'w')list = []list1 = []#得到所有图片的路径,加到列表list1中root, dirs, files = next(os.walk(path))for i in range(len(dirs)):file = os.listdir(path + '/' + dirs[i])for j in range(len(file)):line = path + '/' +dirs[i] + '/' + str(file[j])list1.append(line)#计算每张图片的md5值,并将图片路径与其md5值整合到列表list中for n in range(len(list1)):hash = md5()img = open(list1[n], 'rb')hash.update(img.read())img.close()list2 = [list1[n], hash.hexdigest()]f.write(str(list2)+'\n')list.append(list2)#两两比较md5值,若相同,则删去一张图片m = 0while m < len(list):t = m + 1while t < len(list):if list[m][1] == list[t][1]:os.remove(list[t][0])del list[t]else:t += 1m += 1if __name__ == '__main__':main()
去重结果
计算的每张图片 md5 值
重复图片已去除
直接对某一文件夹内的图片进行去重
#得到所有图片的路径,加到列表list1中root, dirs, files = next(os.walk(path))for i in range(len(dirs)):file = os.listdir(path + '/' + dirs[i])for j in range(len(file)):line = path + '/' +dirs[i] + '/' + str(file[j])list1.append(line)
将上述代码改为以下代码即可
root, _, files = next(os.walk(path))for i in range(len(files)):line = path + '/' + str(files[i])list1.append(line)
实例展示
对一个文件夹 images11 中的图片去重
Python-计算md5值对图片去重相关推荐
- Python 计算MD5值 图片查重去重
MD5 MD5 即 Message-Digest Algorithm 5(信息-摘要算法5).摘要算法又称哈希算法.散列算法. 它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进 ...
- Golang 计算MD5值示例
Golang提供了"crypto/md5"包用来计算md5值,使用起来简单方便,解决了我长久以来的疑问^_^ 一种是直接调用md5计算 package mainimport (&q ...
- python 曲线分析_大数据分析之Python计算KS值并绘制KS曲线
本篇教程探讨了大数据分析之Python计算KS值并绘制KS曲线,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. python实现KS曲线,相关使用方法请参考上篇博客-R语言实现K ...
- Golang 计算MD5值
Golang 计算MD5值 关键词:golang 计算 md5 文件 字符串 代码 //MD5 func Md5SmallFile(path string) (string, error) {file ...
- python3将base64格式的图片保存为MD5值的图片
python3将base64格式的图片保存为MD5值的图片 import os, base64 import cv2 import numpy as np import hashlib# QQ 273 ...
- 基于python和md5的相同图片查重
通过爬虫获取的互联网图片,下载下来之后有一些是重复的,人眼检查的话费时费力,而且也很难查全.本文通过计算并比对图片的md5值来判断是否为重复图片,以备后用. MD5信息摘要算法(英语:MD5 Mess ...
- Python 获取md5值(hashlib)
常用方法 import hashlib# 创建MD5对象,可以直接传入要加密的数据 m = hashlib.md5('123456'.encode(encoding='utf-8')) # m = h ...
- 计算MD5值有几种方式
想知道计算"hello"的MD5值有几种方式 linux 命令行: [sm2env ~]# echo "hello" | md5sum | cut -d ' ' ...
- 怎样用python计算π的值_Python 计算 π 值的简单示例
对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! π是一个无数人追随的真正的神奇数字.我不是很清楚一个永远重复的无理数的迷人之处.在我看来,我乐于计 ...
最新文章
- 【运筹学】线性规划 人工变量法 ( 人工变量法案例 | 第三次迭代 | 中心元变换 | 检验数计算 | 最优解判定 )
- ccs船级社认证费用多少_亚马逊UL507认证是什么?办理费用是多少?
- 《剑指offer》序列化二叉树
- Java用SAX解析XML
- 先装vs还是先装sql_锅炉给水泵的止回阀到底安装在出口阀前还是阀后?
- Docker-Compose快速搭建Oracle-11G系统
- kkfileview v2.0 发布,文件在线预览项目方案
- MFC开发IM-第三篇、资源视图--显示在另一个编辑器中打开
- 利用edge模拟ie8浏览器环境
- 2022年全球程序员平均薪资发布,中国排名很意外
- 安卓python编辑器-10 个平板电脑上的 Python 编辑器
- 【备读学术论文总览】研究方向论文清单
- ios 描述文件位置
- EM78P468 义隆单片机 单键触控
- 【C++】初识智能指针:智能在哪?
- SAP FICO 固定资产的四种折旧方式
- 浏览器兼容性工具 Spoon Browser Sandbox
- 45 STM32 IIC主机、从机通信实例(ma51t12b触摸按键芯片)
- libuv源码分析(1)事件循环分析
- matlab如何去除图像白边_MATLAB去除白边
热门文章
- 机器学习_4.隐马尔可夫模型初识
- JPA Unknown Id.generator: xxx
- doc转docx文件会乱吗_java下载doc/docx文件乱码的问题
- this is incompatible with sql_mode=only_full_group_by错误解决
- 移动互联网的创业机会在哪
- 重要经验八---UIImage转换为CVPixelBufferRef
- Linux虐我千百遍,我待linux如初恋
- Mysql 知行必会 “子查询”
- 【MES系统】这个表格让您秒懂MES制造执行系统与ERP企业管理系统的区别及联系
- 判定是否互为字符重排(入门算法30)