简单验证码识别,验证码识别,字模是网上的,并不完全匹
简单验证码识别,验证码识别,字模是网上的,并不完全匹
字模是网上的,并不完全匹配,所以最后取字模中匹配度最高的作为匹配数字。这里3与字模8的匹配比3与3的匹配高,所以最后验证码是0379而程序做出来的是0879。
#encoding=utf-8N={} #字模,用的是网上的,此代码取模位置有些不同, #但大致一样。N[0]=[0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,1,0,0,0,0,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,1,1,1,0,1,1,1,0,0,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,]N[1]=[0,0,1,1,1,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,]N[7]=[1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,]N[6]=[0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,]N[3]=[1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,]N[9]=[0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,0,0,0,0,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,1,1,1,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,]N[2]=[1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,]N[5]=[1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,1,0,0,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,]N[4]=[0,0,0,0,1,1,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0,0,]N[8]=[0,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,1,1,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,1,1,1,0,0,1,1,1,1,0,1,1,0,0,0,0,1,1,1,0,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,]import Image,ImageEnhance,ImageFilterfirst = 11 #第一个字位置second = 23thirt = 35last = 47width = 19 #每个字宽度interval = 2top = 2low = 15 #通过中值过滤、对比度加强去噪img = Image.open('22.jpeg')img = img.filter(ImageFilter.MedianFilter()) #中值过滤函数img_bright = ImageEnhance.Contrast(img)img_bright = img_bright.enhance(3.0) #加强对比3.0倍img_bright.save('img_final.jpg') #剪切数字img = Image.open('img_final.jpg')img_number = []box_left =[11,23,35,47]box_right =[21,33,45,57]for i in range(4): box = (box_left[i],top,box_right[i],low) img_single = img.crop(box) file_name = 'number_' + str(i) + '.jpg' img_single.save(file_name)matrix = open('matrix.txt','a') #储存单个数字的矩阵for i in range(4): cube = [] file_name = 'number_' + str(i) + '.jpg' img = Image.open(file_name) for j in range(13): for k in range(10): if(img.getpixel((k,j)) <(50,50,50) ): #RGB值接近0,即黑色字体 cube.append(1) else: cube.append(0) s = 0 matrix.write('cube[' + str(i) + ']=[' ) for q in cube: if(s%10==0): matrix.write('\\n') matrix.write(str(q) + ',') s=s+1 matrix.write("]\\n\\n\\n")matrix.close()matrix = open('matrix.txt') #读取验证码的标记数组final = {}for i in range(4): final[i] = []for i in range(4): matrix.readline() for j in range(13): a = matrix.readline() a = list(a) for l in range(10): if(l==0): final[i].append(a[l]) else: final[i].append(a[l*2]) for z in range(2): matrix.readline()matrix.close()num = {}for i in range(4): num[i] = []for i in range(4): max_counter = 0 for k in range(10): counter = 0 for j in range(130): if(int(final[i][j])==N[k][j]): #注意将str的final转换成int counter +=1 if(counter > max_counter): max_counter = counter num[i]=kprint(num)#该片段来自于http://byrx.net
相关内容
- 猜数字游戏,,[Python]代码cl
- python在每个独立的进程中运行一个函数,python进程,#!
- 牛顿、拉复生方法求开方,牛顿拉复生开方,[Python]代码
- winmm调整windows系统的音量大小,winmm音量,[Python]代码#
- Python脚本提取谷歌音乐搜索结果,python谷歌,[Python]代码
- 股市信息下载,,[Python]代码im
- 栈类,,[Python]代码cl
- 三维矢量的幅度,三维矢量幅度,[Python]代码fr
- 素数检测器,,[Python]代码de
- Sierpinski carpet(Sierpinski 地毯),sierpinskicarpet,[Python]代
评论关闭