简单验证码识别,验证码识别,get_CAPTCHA.


get_CAPTCHA.py

#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)

22.jpeg

imgs/asCode/02225742_AJpz.jpeg

评论关闭