利用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
复制代码

转载于:https://juejin.im/post/5c90ee736fb9a071061ef5ee

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值