美文网首页Life is short, I use Python
利用Python进行两张图片比较

利用Python进行两张图片比较

作者: 本一和他的朋友们 | 来源:发表于2018-03-10 15:43 被阅读30次

环境准备:

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进行两张图片比较

    本文链接:https://www.haomeiwen.com/subject/cgqbfftx.html