Python2比较当前图片跟图库哪个图片相似的方法示例
本文实例讲述了Python2比较当前图片跟图库哪个图片相似的方法。分享给大家供大家参考,具体如下:
#-*-coding:utf-8-*-
'''
Createdon2019年7月22日
'''
fromseleniumimportwebdriver
fromtimeimportsleep
fromPILimportImage
importrandom
importos
importcv2
importnumpyasnp
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)
defgetGray(image_file):
tmpls=[]
forhinrange(0,image_file.size[1]):#h
forwinrange(0,image_file.size[0]):#w
tmpls.append(image_file.getpixel((w,h)))
returntmpls
defgetAvg(ls):#获取平均灰度值
returnsum(ls)/len(ls)
defaHash(fne):
image_file=Image.open(fne)#打开
image_file=image_file.resize((35,35))#重置图片大小我12pxX12px
image_file=image_file.convert("L")#转256灰度图
Grayls=getGray(image_file)#灰度集合
avg=getAvg(Grayls)#灰度平均值
bitls=''#接收获取0或1
forhinrange(1,image_file.size[1]-1):#h
forwinrange(1,image_file.size[0]-1):#w
ifimage_file.getpixel((w,h))>=avg:#像素的值比较平均值大于记为1小于记为0
bitls=bitls+'1'
else:
bitls=bitls+'0'
returnbitls
defgetMH(i1,i2):
a=aHash(i1)
b=aHash(i2)
dist=0;
foriinrange(0,len(a)):
ifa[i]==b[i]:
dist=dist+1
returndist
defmatch(a,rootdir):
list=os.listdir(rootdir)
li=[]
foriinlist:
re=getMH(a,rootdir+"/"+i)
li.append(re)
b=str(li.index(max(li))+1)
a=li.index(max(li))
returnb,list[a].split(".")[0]
a=match('E:/test/das4.png',"E:/test/pic4")
printa
另附参考的
#-*-coding:utf-8-*-
'''
Createdon2018年5月17日
'''
fromseleniumimportwebdriver
fromPILimportImage
importrequests
importtime
importbase64
importbase64
importrequests
fromurllibimporturlencode
importjson
#requests.packages.urllib3.disable_warnings()
importdatetime
fromtimeimportstrftime
fromtimeimportsleep
fromPILimportImage
#importpytesseract
fromPILimportImage
importos
importcv2
fromnumpyimportaverage,dot,linalg
importheapq
importcollections
fromlib.readConfigimportReadconfig
conf=Readconfig()
filedir=conf.getConfigValue("filedir")
defgetGray(image_file):
tmpls=[]
forhinrange(0,image_file.size[1]):#h
forwinrange(0,image_file.size[0]):#w
tmpls.append(image_file.getpixel((w,h)))
returntmpls
defgetAvg(ls):#获取平均灰度值
returnsum(ls)/len(ls)
defgetMH(i1,i2):
a=getImgHash(i1)
b=getImgHash(i2)
dist=0;
foriinrange(0,len(a)):
ifa[i]==b[i]:
dist=dist+1
returndist
defgetImgHash(fne):
image_file=Image.open(fne)#打开
image_file=image_file.resize((35,35))#重置图片大小我12pxX12px
image_file=image_file.convert("L")#转256灰度图
Grayls=getGray(image_file)#灰度集合
avg=getAvg(Grayls)#灰度平均值
bitls=''#接收获取0或1
forhinrange(1,image_file.size[1]-1):#h
forwinrange(1,image_file.size[0]-1):#w
ifimage_file.getpixel((w,h))>=avg:#像素的值比较平均值大于记为1小于记为0
bitls=bitls+'1'
else:
bitls=bitls+'0'
returnbitls
defmatch1(a,rootdir):
list=os.listdir(rootdir)
li=[]
foriinlist:
#printrootdir+"/"+i
re=getMH(a,rootdir+"/"+i)
li.append(re)
#printli
#printmax(li)
b=str(li.index(max(li))+1)
returnb
defg_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))
printu"获取到验证码:"+dic[re1]+dic[re2]+dic[re3]+dic[re4]
returndic[re1],dic[re2],dic[re3],dic[re4]
defg_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)
printdic[re1]
printdic[re2]
printdic[re3]
printdic[re4]
returndic[re1],dic[re2],dic[re3],dic[re4]
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python图片操作技巧总结》、《Python数据结构与算法教程》、《PythonSocket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。