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

前端之家收集整理的这篇文章主要介绍了Python2比较当前图片跟图库哪个图片相似的方法示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

  1. # -*- coding: utf-8 -*-
  2. '''
  3. Created on 2019年7月22日
  4. '''
  5. from selenium import webdriver
  6. from time import sleep
  7. from PIL import Image
  8. import random
  9. import os
  10. import cv2
  11. import numpy as np
  12. url ="URL"
  13. driver = webdriver.Chrome()
  14. driver.implicitly_wait(10)
  15. driver.maximize_window()
  16. driver.get(url)
  17. sleep(2)
  18. driver.save_screenshot("E:/test/das.png")
  19. p1=r'E:/test/das1.png'
  20. p2=r'E:/test/das2.png'
  21. p3=r'E:/test/das3.png'
  22. p4=r'E:/test/das4.png'
  23. element = driver.find_element_by_id("imgcode")
  24. left = element.location['x']
  25. top = element.location['y']
  26. right = element.location['x'] + element.size['width']
  27. bottom = element.location['y'] + element.size['height']
  28. im1 = Image.open(r'E:/test/das.png')
  29. im1 = im1.crop((left,top,right,bottom))
  30. im1.save(r"E:/test/dascode.png")
  31. img = Image.open("E:/test/dascode.png")
  32. cropped = img.crop((0,25,30)) # (left,upper,lower)
  33. cropped.save(p1)
  34. cropped = img.crop((25,50,lower)
  35. cropped.save(p2)
  36. cropped = img.crop((50,75,lower)
  37. cropped.save(p3)
  38. cropped = img.crop((75,96,lower)
  39. cropped.save(p4)
  40. def getGray(image_file):
  41. tmpls=[]
  42. for h in range(0,image_file.size[1]):#h
  43. for w in range(0,image_file.size[0]):#w
  44. tmpls.append( image_file.getpixel((w,h)) )
  45. return tmpls
  46. def getAvg(ls):#获取平均灰度值
  47. return sum(ls)/len(ls)
  48. def aHash(fne):
  49. image_file = Image.open(fne) # 打开
  50. image_file=image_file.resize((35,35))#重置图片大小我12px X 12px
  51. image_file=image_file.convert("L")#转256灰度图
  52. Grayls=getGray(image_file)#灰度集合
  53. avg=getAvg(Grayls)#灰度平均值
  54. bitls=''#接收获取0或1
  55. for h in range(1,image_file.size[1]-1):#h
  56. for w in range(1,image_file.size[0]-1):#w
  57. if image_file.getpixel((w,h))>=avg:#像素的值比较平均值 大于记为1 小于记为0
  58. bitls=bitls+'1'
  59. else:
  60. bitls=bitls+'0'
  61. return bitls
  62. def getMH(i1,i2):
  63. a=aHash(i1)
  64. b=aHash(i2)
  65. dist = 0;
  66. for i in range(0,len(a)):
  67. if a[i]==b[i]:
  68. dist=dist+1
  69. return dist
  70. def match(a,rootdir):
  71. list = os.listdir(rootdir)
  72. li=[]
  73. for i in list:
  74. re=getMH(a,rootdir+"/"+i)
  75. li.append(re)
  76. b=str(li.index(max(li))+1)
  77. a=li.index(max(li))
  78. return b,list[a].split(".")[0]
  79. a=match('E:/test/das4.png',"E:/test/pic4")
  80. print a

另附参考的

  1. # -*- coding: utf-8 -*-
  2. '''
  3. Created on 2018年5月17日
  4. '''
  5. from selenium import webdriver
  6. from PIL import Image
  7. import requests
  8. import time
  9. import base64
  10. import base64
  11. import requests
  12. from urllib import urlencode
  13. import json
  14. # requests.packages.urllib3.disable_warnings()
  15. import datetime
  16. from time import strftime
  17. from time import sleep
  18. from PIL import Image
  19. # import pytesseract
  20. from PIL import Image
  21. import os
  22. import cv2
  23. from numpy import average,dot,linalg
  24. import heapq
  25. import collections
  26. from lib.readConfig import Readconfig
  27. conf=Readconfig()
  28. filedir=conf.getConfigValue("filedir")
  29. def getGray(image_file):
  30. tmpls=[]
  31. for h in range(0,h)) )
  32. return tmpls
  33. def getAvg(ls):#获取平均灰度值
  34. return sum(ls)/len(ls)
  35. def getMH(i1,i2):
  36. a=getImgHash(i1)
  37. b=getImgHash(i2)
  38. dist = 0;
  39. for i in range(0,len(a)):
  40. if a[i]==b[i]:
  41. dist=dist+1
  42. return dist
  43. def getImgHash(fne):
  44. image_file = Image.open(fne) # 打开
  45. image_file=image_file.resize((35,h))>=avg:#像素的值比较平均值 大于记为1 小于记为0
  46. bitls=bitls+'1'
  47. else:
  48. bitls=bitls+'0'
  49. return bitls
  50. def match1(a,rootdir):
  51. list = os.listdir(rootdir)
  52. li=[]
  53. for i in list:
  54. # print rootdir+"/"+i
  55. re=getMH(a,rootdir+"/"+i)
  56. li.append(re)
  57. # print li
  58. # print max(li)
  59. b=str(li.index(max(li))+1)
  60. return b
  61. def g_code(pic):
  62. 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"}
  63. img = Image.open(pic)
  64. a=img.size[0]
  65. b=img.size[1]
  66. p1=filedir+r'eos_tdym/lib/pic/das1.png'
  67. p2=filedir+r'eos_tdym/lib/pic/das2.png'
  68. p3=filedir+r'eos_tdym/lib/pic/das3.png'
  69. p4=filedir+r'eos_tdym/lib/pic/das4.png'
  70. dir1=filedir+r'eos_tdym/lib/pic/pic1'
  71. dir2=filedir+r'eos_tdym/lib/pic/pic2'
  72. dir3=filedir+r'eos_tdym/lib/pic/pic3'
  73. dir4=filedir+r'eos_tdym/lib/pic/pic4'
  74. cropped = img.crop((0,lower)
  75. cropped.save(p1)
  76. cropped = img.crop((25,lower)
  77. cropped.save(p2)
  78. cropped = img.crop((50,lower)
  79. cropped.save(p3)
  80. cropped = img.crop((75,lower)
  81. cropped.save(p4)
  82. re1=str(match1(p1,dir1))
  83. re2=str(match1(p2,dir2))
  84. re3=str(match1(p3,dir3))
  85. re4=str(match1(p4,dir4))
  86. print u"获取到验证码:"+dic[re1]+dic[re2]+dic[re3]+dic[re4]
  87. return dic[re1],dic[re2],dic[re3],dic[re4]
  88. def g_code1(pic):
  89. dic={"1":"2","32":"z"}
  90. img = Image.open(pic)
  91. a=img.size[0]
  92. b=img.size[1]
  93. p1="pic5/das1.png"
  94. p2="pic5/das2.png"
  95. p3="pic5/das3.png"
  96. p4="pic5/das4.png"
  97. dir1="pic1"
  98. dir2="pic2"
  99. dir3="pic3"
  100. dir4="pic4"
  101. cropped = img.crop((0,lower)
  102. cropped.save(p4)
  103. re1=match1(p1,dir1)
  104. re2=match1(p2,dir2)
  105. re3=match1(p3,dir3)
  106. re4=match1(p4,dir4)
  107. print dic[re1]
  108. print dic[re2]
  109. print dic[re3]
  110. print dic[re4]
  111. return dic[re1],dic[re4]

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

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

猜你在找的Python相关文章