python比较两张图片是否一样_利用Python进行两张图片比较

环境准备:

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

你可能感兴趣的:(python比较两张图片是否一样_利用Python进行两张图片比较)