python类似图片查找_python查找重复图片并删除(图片去重)
本文实例为大家分享了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.插入图片 Document对象有一个add_paragraph()方法插入图片,只需要传入路径或者字节流即可,实际上它也是调用段落的Run ...
- 微信小程序 - 选择图片、预览图片、删除图片
为什么80%的码农都做不了架构师?>>> 小程序开发中你可能会遇到上传的图片首先会选择图片之后预览看下或者不满意需要删除图片,才会提交吧,这样应该是一个比较好的处理方式. 微信 ...
- 实现点击添加对应图片及删除图片
下面要实现的就是点击下方cat.dog.pig.monkey,展示对应的图片,点击图片上的删除按钮,图片删除后,下方对应的恢复初始样式 <div id="wrapper"&g ...
- python 输入文件名查找_python 查找文件名包含指定字符串的方法
编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出绝对路径. import os class searchfile(object): def __init__ ...
- python第k序列元素查找_python查找第k小元素代码分享 -电脑资料
复制代码代码如下: # -*- coding: utf-8 -*- from random import randint from math import ceil, floor def _parti ...
- python 中文查找_python 查找数据库
django.db.utils.ProgrammingError: 1146 的解决办法 在models中设置完数据库相关的东西后执行命令 python manage.py makemigration ...
- python检索字符串_python查找字符串所有子串
原博文 2018-08-02 14:44 − https://blog.csdn.net/jiangjiang_jian/article/details/79453856 [s[i:i + x + 1 ...
- python 含有文本_python – 查找不包含某些文本字符串的所有文本文件
我在 Python 2.7.1上,我正在尝试识别所有不包含某些文本字符串的文本文件. 该程序似乎首先工作,但每当我将文本字符串添加到文件时,它就会不断出现,就好像它不包含它一样(误报).当我检查文本文 ...
- #MySQL#查找表中重复条目、删除重复条目
-- 查找重复条目 SELECT ID,COUNT(ID) FROM IDrecord GROUP BY ID HAVING COUNT(ID) > 1-- 删除重复条目 DELETE FROM ...
最新文章
- js DOM之基础详解
- Vivado 随笔(3) 其他综合属性 dont_touch、fsm_encoding?
- Perfect World
- 如何为运行的 ARM Linux 启用 LAD2.3 版本的诊断扩展
- 做三维模型_这几款倾斜实景三维裸眼3D采集软件你了解吗?
- 程序员被纳入新生代农民工;“腾讯视频崩了”上热搜;英特尔发布全新独立显卡品牌 Arc|极客头条...
- java scanner类成员_Java Scanner类的使用示例
- 系统如何删除被其它进程占用的文件?
- 27. JavaScript Cookies
- python取系统日期前一天_python 获取前一天或前N天的日期
- 分析Windows二进制文件和嵌入式资源
- 高通8953启动流程
- “双花”问题及解决之道
- android 4.4刷机,刷机大师V3.4.4更新:支持Android 4.4
- C# 按Button弹出新的窗体 Show()方法 和 ShowDialog()方法
- linux原理与应用 武汉大学,Linux原理与应用 郑鹏 武汉大学出版社 9787307060876
- Windows10剪切板快捷键
- c语言菜单 键盘,三、Windows键盘快捷键—启用菜单项
- 个人技术博客 友情链接,关注
- 神舟服务器安装系统,神舟UT47笔记本一键u盘装系统win10教程