环境准备:
Python 2.7 or Python 3
需要安装的包
pytesseract
pytesser Pillow
达成目标
比较两张图片是不是一个图片
如何运行
python file.py
复制代码
代码如下
#!C:/Python27 & Python3
#coding=utf-8
# 1. pip install pillow
# 2. pip install pytesseract
# 3. pip install pytesser
# Run: python comporePicture.py
import pytesseract
from pytesser import *
from PIL import Image,ImageEnhance,ImageFilter
import os
import fnmatch
import re,time
import urllib, random
#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)
#比较100个字符有几个字符相同
def getMH(a,b):
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()
'''
#图片地址自行替换
bijiaotupian = ".//picture//kangshifu01.jpg"
openfile = ".//picture"
a=getImgHash(bijiaotupian)
#被打开的文件夹中的图片
files = os.listdir(openfile)#图片文件夹地址自行替换
for file in files:
b=getImgHash(".//picture//"+str(file))
compare=getMH(a,b)
print(file,u'相似度',str(compare)+'%')
# if compare >= 90:
# print(file,u'相似度',str(compare)+'%')
# else:
# pass
复制代码