美文网首页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