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程序设计有所帮助。