没有合适的资源?快使用搜索试试~ 我知道了~
首页使用python opencv对目录下图片进行去重的方法
资源详情
资源评论
资源推荐

使用使用python opencv对目录下图片进行去重的方法对目录下图片进行去重的方法
今天小编就为大家分享一篇使用python opencv对目录下图片进行去重的方法,具有很好的参考价值,希望对大
家有所帮助。一起跟随小编过来看看吧
版本:版本:
平台:ubuntu 14 / I5 / 4G内存
python版本:python2.7
opencv版本:2.13.4
依赖:依赖:
如果系统没有python,则需要进行安装
sudo apt-get install python
sudo apt-get install python-dev
sudo apt-get install python-pip
sudo pip install numpy mathplotlib
sudo apt-get install libcv-dev
sudo apt-get install python-opencv
使用感知哈希算法进行图片去重
原理:对每个文件进行遍历所有进行去重,因此图片越多速度越慢,但是可以节省手动操作
感知哈希原理:感知哈希原理:
1、需要比较的图片都缩放成8*8大小的灰度图
2、获得每个图片每个像素与平均值的比较,得到指纹
3、根据指纹计算汉明距离
5、如果得出的不同的元素小于5则为相同(相似?)的图片
#!/usr/bin/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()

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0