本文实例为大家分享了python查找重复图片并删除的具体代码,供大家参考,具体内容如下

和网络爬虫配套的,也可单独使用,从网上爬下来的图片重复太多,代码支持识别不同尺寸大小一致的图片,并把重复的图片删除,只保留第一份。

# -*- coding: utf-8 -*-

import cv2

import numpy as np

import os,sys,types

def cmpandremove2(path):

dirs = os.listdir(path)

dirs.sort()

if len(dirs) <= 0:

return

dict={}

for i in dirs:

prepath = path + "/" + i

preimg = cv2.imread(prepath)

if type(preimg) is types.NoneType:

continue

preresize = cv2.resize(preimg, (8,8))

pregray = cv2.cvtColor(preresize, cv2.COLOR_BGR2GRAY)

premean = cv2.mean(pregray)[0]

prearr = np.array(pregray.data)

for j in range(0,len(prearr)):

if prearr[j] >= premean:

prearr[j] = 1

else:

prearr[j] = 0

print "get", prepath

dict[i] = prearr

dictkeys = dict.keys()

dictkeys.sort()

index = 0

while True:

if index >= len(dictkeys):

break

curkey = dictkeys[index]

dellist=[]

print curkey

index2 = index

while True:

if index2 >= len(dictkeys):

break

j = dictkeys[index2]

if curkey == j:

index2 = index2 + 1

continue

arr1 = dict[curkey]

arr2 = dict[j]

diff = 0

for k in range(0,len(arr2)):

if arr1[k] != arr2[k]:

diff = diff + 1

if diff <= 5:

dellist.append(j)

index2 = index2 + 1

if len(dellist) > 0:

for j in dellist:

file = path + "/" + j

print "remove", file

os.remove(file)

dict.pop(j)

dictkeys = dict.keys()

dictkeys.sort()

index = index + 1

def cmpandremove(path):

index = 0

flag = 0

dirs = os.listdir(path)

dirs.sort()

if len(dirs) <= 0:

return 0

while True:

if index >= len(dirs):

break

prepath = path + dirs[index]

print prepath

index2 = 0

preimg = cv2.imread(prepath)

if type(preimg) is types.NoneType:

index = index + 1

continue

preresize = cv2.resize(preimg, (8, 8))

pregray = cv2.cvtColor(preresize, cv2.COLOR_BGR2GRAY)

premean = cv2.mean(pregray)[0]

prearr = np.array(pregray.data)

for i in range(0, len(prearr)):

if prearr[i] >= premean:

prearr[i] = 1

else:

prearr[i] = 0

removepath = []

while True:

if index2 >= len(dirs):

break

if index2 != index:

curpath = path + dirs[index2]

# print curpath

curimg = cv2.imread(curpath)

if type(curimg) is types.NoneType:

index2 = index2 + 1

continue

curresize = cv2.resize(curimg, (8, 8))

curgray = cv2.cvtColor(curresize, cv2.COLOR_BGR2GRAY)

curmean = cv2.mean(curgray)[0]

curarr = np.array(curgray.data)

for i in range(0, len(curarr)):

if curarr[i] >= curmean:

curarr[i] = 1

else:

curarr[i] = 0

diff = 0

for i in range(0, len(curarr)):

if curarr[i] != prearr[i]:

diff = diff + 1

if diff <= 5:

print 'the same'

removepath.append(curpath)

flag = 1

index2 = index2 + 1

index = index + 1

if len(removepath) > 0:

for file in removepath:

print "remove", file

os.remove(file)

dirs = os.listdir(path)

dirs.sort()

if len(dirs) <= 0:

return 0

# index = 0

return flag

path = 'pics/'

cmpandremove(path)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

python类似图片查找_python查找重复图片并删除(图片去重)相关推荐

  1. 视频直播源码,插入图片、删除图片、设置图片大小、提取图片

    视频直播源码,插入图片.删除图片.设置图片大小.提取图片 1.插入图片 Document对象有一个add_paragraph()方法插入图片,只需要传入路径或者字节流即可,实际上它也是调用段落的Run ...

  2. 微信小程序 - 选择图片、预览图片、删除图片

    为什么80%的码农都做不了架构师?>>>    小程序开发中你可能会遇到上传的图片首先会选择图片之后预览看下或者不满意需要删除图片,才会提交吧,这样应该是一个比较好的处理方式. 微信 ...

  3. 实现点击添加对应图片及删除图片

    下面要实现的就是点击下方cat.dog.pig.monkey,展示对应的图片,点击图片上的删除按钮,图片删除后,下方对应的恢复初始样式 <div id="wrapper"&g ...

  4. python 输入文件名查找_python 查找文件名包含指定字符串的方法

    编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径. import os class searchfile(object): def __init__ ...

  5. python第k序列元素查找_python查找第k小元素代码分享 -电脑资料

    复制代码代码如下: # -*- coding: utf-8 -*- from random import randint from math import ceil, floor def _parti ...

  6. python 中文查找_python 查找数据库

    django.db.utils.ProgrammingError: 1146 的解决办法 在models中设置完数据库相关的东西后执行命令 python manage.py makemigration ...

  7. python检索字符串_python查找字符串所有子串

    原博文 2018-08-02 14:44 − https://blog.csdn.net/jiangjiang_jian/article/details/79453856 [s[i:i + x + 1 ...

  8. python 含有文本_python – 查找不包含某些文本字符串的所有文本文件

    我在 Python 2.7.1上,我正在尝试识别所有不包含某些文本字符串的文本文件. 该程序似乎首先工作,但每当我将文本字符串添加到文件时,它就会不断出现,就好像它不包含它一样(误报).当我检查文本文 ...

  9. #MySQL#查找表中重复条目、删除重复条目

    -- 查找重复条目 SELECT ID,COUNT(ID) FROM IDrecord GROUP BY ID HAVING COUNT(ID) > 1-- 删除重复条目 DELETE FROM ...

最新文章

  1. js DOM之基础详解
  2. Vivado 随笔(3) 其他综合属性 dont_touch、fsm_encoding?
  3. Perfect World
  4. 如何为运行的 ARM Linux 启用 LAD2.3 版本的诊断扩展
  5. 做三维模型_这几款倾斜实景三维裸眼3D采集软件你了解吗?
  6. 程序员被纳入新生代农民工;“腾讯视频崩了”上热搜;英特尔发布全新独立显卡品牌 Arc|极客头条...
  7. java scanner类成员_Java Scanner类的使用示例
  8. 系统如何删除被其它进程占用的文件?
  9. 27. JavaScript Cookies
  10. python取系统日期前一天_python 获取前一天或前N天的日期
  11. 分析Windows二进制文件和嵌入式资源
  12. 高通8953启动流程
  13. “双花”问题及解决之道
  14. android 4.4刷机,刷机大师V3.4.4更新:支持Android 4.4
  15. C# 按Button弹出新的窗体 Show()方法 和 ShowDialog()方法
  16. linux原理与应用 武汉大学,Linux原理与应用 郑鹏 武汉大学出版社 9787307060876
  17. Windows10剪切板快捷键
  18. c语言菜单 键盘,三、Windows键盘快捷键—启用菜单项
  19. 个人技术博客 友情链接,关注
  20. 神舟服务器安装系统,神舟UT47笔记本一键u盘装系统win10教程

热门文章

  1. Dedecms移动站静态化实操分享 - 堪称完美(附文件)
  2. 苹果第四财季净利107.14亿美元;美团关闭共享充电宝业务;支付宝上线iPhone X碎屏险丨价值早报
  3. 哭死!奉劝粗心的兄弟姐妹入碎屏险!
  4. 系统规划与管理师相关英语
  5. Design - 像素化风格指南
  6. 物联网:产融结合将出现新变化
  7. MySQL-10-运算符
  8. tp5 报错variable type error: array解决方法
  9. 等比级数(geometric progression) 和等差数列
  10. 64位UbuntuKylin (优麒麟系统)ISO镜像下载