Python2比较当前图片跟图库哪个图片相似的方法示例


Posted in Python onSeptember 28, 2019

本文实例讲述了Python2比较当前图片跟图库哪个图片相似的方法。分享给大家供大家参考,具体如下:

# -*- coding: utf-8 -*-
'''
Created on 2019年7月22日
'''
from selenium import webdriver
from time import sleep
from PIL import Image
import random
import os
import cv2
import numpy as np
url ="URL"
driver = webdriver.Chrome()
driver.implicitly_wait(10)
driver.maximize_window()
driver.get(url)
sleep(2)
driver.save_screenshot("E:/test/das.png")
p1=r'E:/test/das1.png'
p2=r'E:/test/das2.png'
p3=r'E:/test/das3.png'
p4=r'E:/test/das4.png'
element = driver.find_element_by_id("imgcode")
left = element.location['x']
top = element.location['y']
right = element.location['x'] + element.size['width']
bottom = element.location['y'] + element.size['height']
im1 = Image.open(r'E:/test/das.png')
im1 = im1.crop((left, top, right, bottom))
im1.save(r"E:/test/dascode.png")
img = Image.open("E:/test/dascode.png")
cropped = img.crop((0, 0, 25, 30)) # (left, upper, right, lower)
cropped.save(p1)
cropped = img.crop((25, 0, 50, 30)) # (left, upper, right, lower)
cropped.save(p2)
cropped = img.crop((50, 0, 75, 30)) # (left, upper, right, lower)
cropped.save(p3)
cropped = img.crop((75, 0, 96, 30)) # (left, upper, right, lower)
cropped.save(p4)
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)
def aHash(fne):
  image_file = Image.open(fne) # 打开
  image_file=image_file.resize((35,35))#重置图片大小我12px X 12px
  image_file=image_file.convert("L")#转256灰度图
  Grayls=getGray(image_file)#灰度集合
  avg=getAvg(Grayls)#灰度平均值
  bitls=''#接收获取0或1
  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
def getMH(i1,i2):
  a=aHash(i1)
  b=aHash(i2)
  dist = 0;
  for i in range(0,len(a)):
    if a[i]==b[i]:
      dist=dist+1
  return dist
def match(a,rootdir):
  list = os.listdir(rootdir) 
  li=[]
  for i in list:
    re=getMH(a,rootdir+"/"+i)
    li.append(re)
  b=str(li.index(max(li))+1)  
  a=li.index(max(li))
  return b,list[a].split(".")[0]
a=match('E:/test/das4.png',"E:/test/pic4")
print a

另附参考的

# -*- coding: utf-8 -*-
'''
Created on 2018年5月17日
'''
from selenium import webdriver
from PIL import Image
import requests
import time
import base64
import base64
import requests
from urllib import urlencode
import json
# requests.packages.urllib3.disable_warnings()
import datetime
from time import strftime
from time import sleep
from PIL import Image
# import pytesseract
from PIL import Image
import os
import cv2
from numpy import average, dot, linalg
import heapq
import collections
from lib.readConfig import Readconfig
conf=Readconfig()
filedir=conf.getConfigValue("filedir")
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)
def getMH(i1,i2):
  a=getImgHash(i1)
  b=getImgHash(i2)
  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((35,35))#重置图片大小我12px X 12px
  image_file=image_file.convert("L")#转256灰度图
  Grayls=getGray(image_file)#灰度集合
  avg=getAvg(Grayls)#灰度平均值
  bitls=''#接收获取0或1
  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
def match1(a,rootdir):
  list = os.listdir(rootdir) 
  li=[]
  for i in list:
#     print rootdir+"/"+i
    re=getMH(a,rootdir+"/"+i)
    li.append(re)
#   print li
#   print max(li)
  b=str(li.index(max(li))+1)  
  return b
def g_code(pic):
  dic={"1":"2","2":"3","3":"4","4":"5","5":"6","6":"7","7":"8","8":"9",
"9":"a","10":"b","11":"c","12":"d","13":"e","14":"f","15":"g","16":"h",
"17":"i","18":"j","19":"k","20":"m","21":"n","22":"p","23":"q","24":"r",
"25":"s","26":"t","27":"u","28":"v","29":"w","30":"x","31":"y","32":"z"}
  img = Image.open(pic)
  a=img.size[0]
  b=img.size[1]
  p1=filedir+r'eos_tdym/lib/pic/das1.png'
  p2=filedir+r'eos_tdym/lib/pic/das2.png'
  p3=filedir+r'eos_tdym/lib/pic/das3.png'
  p4=filedir+r'eos_tdym/lib/pic/das4.png'
  dir1=filedir+r'eos_tdym/lib/pic/pic1'
  dir2=filedir+r'eos_tdym/lib/pic/pic2'
  dir3=filedir+r'eos_tdym/lib/pic/pic3'
  dir4=filedir+r'eos_tdym/lib/pic/pic4'
  cropped = img.crop((0, 0, 25, 30)) # (left, upper, right, lower)
  cropped.save(p1)
  cropped = img.crop((25, 0, 50, 30)) # (left, upper, right, lower)
  cropped.save(p2)
  cropped = img.crop((50, 0, 75, 30)) # (left, upper, right, lower)
  cropped.save(p3)
  cropped = img.crop((75, 0, 96, 30)) # (left, upper, right, lower)
  cropped.save(p4)
  re1=str(match1(p1,dir1))
  re2=str(match1(p2,dir2))
  re3=str(match1(p3,dir3))
  re4=str(match1(p4,dir4))
  print u"获取到验证码:"+dic[re1]+dic[re2]+dic[re3]+dic[re4]
  return dic[re1],dic[re2],dic[re3],dic[re4]
def g_code1(pic):
  dic={"1":"2","2":"3","3":"4","4":"5","5":"6","6":"7","7":"8","8":"9",
"9":"a","10":"b","11":"c","12":"d","13":"e","14":"f","15":"g","16":"h",
"17":"i","18":"j","19":"k","20":"m","21":"n","22":"p","23":"q","24":"r",
"25":"s","26":"t","27":"u","28":"v","29":"w","30":"x","31":"y","32":"z"}
  img = Image.open(pic)
  a=img.size[0]
  b=img.size[1]
  p1="pic5/das1.png"
  p2="pic5/das2.png"
  p3="pic5/das3.png"
  p4="pic5/das4.png"
  dir1="pic1"
  dir2="pic2"
  dir3="pic3"
  dir4="pic4"
  cropped = img.crop((0, 0, 25, 30)) # (left, upper, right, lower)
  cropped.save(p1)
  cropped = img.crop((25, 0, 50, 30)) # (left, upper, right, lower)
  cropped.save(p2)
  cropped = img.crop((50, 0, 75, 30)) # (left, upper, right, lower)
  cropped.save(p3)
  cropped = img.crop((75, 0, 96, 30)) # (left, upper, right, lower)
  cropped.save(p4)
  re1=match1(p1,dir1)
  re2=match1(p2,dir2)
  re3=match1(p3,dir3)
  re4=match1(p4,dir4)
  print dic[re1]
  print dic[re2]
  print dic[re3]
  print dic[re4]
  return dic[re1],dic[re2],dic[re3],dic[re4]

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python 比较两个数组的元素的异同方法
Aug 17 Python
Python简单实现socket信息发送与监听功能示例
Jan 03 Python
Python pymongo模块用法示例
Mar 31 Python
Python 数据处理库 pandas进阶教程
Apr 21 Python
打包python 加icon 去掉cmd黑窗口方法
Jun 24 Python
简单了解Python3里的一些新特性
Jul 13 Python
超实用的 30 段 Python 案例
Oct 10 Python
Python进程池Pool应用实例分析
Nov 27 Python
python return逻辑判断表达式实现解析
Dec 02 Python
用什么库写 Python 命令行程序(示例代码详解)
Feb 20 Python
pycharm 2020 1.1的安装流程
Sep 29 Python
TensorFlow的环境配置与安装方法
Feb 20 Python
python使用opencv实现马赛克效果示例
Sep 28 #Python
python打包成so文件过程解析
Sep 28 #Python
python基于FTP实现文件传输相关功能代码实例
Sep 28 #Python
python网络爬虫 Scrapy中selenium用法详解
Sep 28 #Python
在vscode中配置python环境过程解析
Sep 28 #Python
python爬虫 线程池创建并获取文件代码实例
Sep 28 #Python
python 单线程和异步协程工作方式解析
Sep 28 #Python
You might like
mysq GBKl乱码
2006/11/28 PHP
PHP Array交叉表实现代码
2010/08/05 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
时间戳转换为时间 年月日时间的JS函数
2013/08/19 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
10个在JavaScript开发中常遇到的BUG
2017/12/18 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
使用nvm和nrm优化node.js工作流的方法
2019/01/17 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
简单介绍Python中的JSON模块
2015/04/08 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
基于python OpenCV实现动态人脸检测
2018/05/25 Python
使用python Fabric动态修改远程机器hosts的方法
2018/10/26 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
Python多线程多进程实例对比解析
2020/03/12 Python
Python实现GIF图倒放
2020/07/16 Python
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
技术总监的工作职责
2013/11/13 职场文书
群众路线剖析材料
2014/02/02 职场文书
夫妻双方自愿离婚协议书
2014/10/24 职场文书
2014年学校财务工作总结
2014/12/06 职场文书
2015年酒店前台工作总结
2015/04/20 职场文书
pytorch实现线性回归以及多元回归
2021/04/11 Python
详解Java ES多节点任务的高效分发与收集实现
2021/06/30 Java/Android