python 图片对比相似度_python 判断图片相似度一个十分简单的示例

python 判断图片相似度一个十分简单的示例

http://www.thinksaas.cn/topics/0/399/399804.html

python 判断图片相似度一个十分简单的示例,只是个例子,精度可能不是很高。主要介绍一下原理:先将图片转为 12x12像素的灰度图片--获取图片平均灰度--遍历图片内部10x10像素(去掉周围1像素)--比较每一个像素与平均值大小--如果大则字符串加1不然加0(这里我选用字符串保存,其实方法很多的)--接下去就是遍历文件夹中图片了,比较相似度,返回相似度了

from PIL import Image

import os

#import hashlib

def getGray(image_file):

tmpls=[]

for h in range(0, image_file.size[1]):#h

for w in range(0, image_file.size[0]):#w

tmpls.append( image_file.getpixel((w,h)) )

return tmpls

def getAvg(ls):#获取平均灰度值

return sum(ls)/len(ls)

def getMH(a,b):#比较64个字符有几个字符相同

dist = 0;

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

if a[i]==b[i]:

dist=dist+1

return dist

def getImgHash(fne):

image_file = Image.open(fne) # 打开

image_file=image_file.resize((12, 12))#重置图片大小我12px X 12px

image_file=image_file.convert("L")#转256灰度图

Grayls=getGray(image_file)#灰度集合

avg=getAvg(Grayls)#灰度平均值

bitls=''#接收获取0或1

#除去变宽1px遍历像素

for h in range(1, image_file.size[1]-1):#h

for w in range(1, image_file.size[0]-1):#w

if image_file.getpixel((w,h))>=avg:#像素的值比较平均值 大于记为1 小于记为0

bitls=bitls+'1'

else:

bitls=bitls+'0'

return bitls

'''

m2 = hashlib.md5()

m2.update(bitls)

print m2.hexdigest(),bitls

return m2.hexdigest()

'''

a=getImgHash("./Test/测试图片.jpg")#图片地址自行替换

files = os.listdir("./Test")#图片文件夹地址自行替换

for file in files:

b=getImgHash("./Test/"+str(file))

compare=getMH(a,b)

print file,u'相似度',str(compare)+'%'


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部