超级鹰,字符,点触,滑块验证码识别

该文介绍了使用Python进行字符验证码处理的步骤,包括灰度化、二值化和降噪,以及使用TesseractOCR引擎进行识别。此外,还讲解了如何通过超级鹰API进行点触验证的自动化处理,并提供了使用Selenium进行滑块验证的示例代码。

目录

字符验证码

导入 pip install pillow

导入:pip install Pytesseract

点触验证

超级鹰接口代码

测试代码

滑块验证


字符验证码

导入 ;pip install pillow

导入:pip install Pytesseract

PIL库

常用阈值选择的方法是:
灰度平均值值法: 取 127 0~255 的中数, ( 0+255 /2 = 127
平均值法:
计算像素点矩阵中的所有像素点的灰度值的平均值 avg
迭代法:
选择一个近似阈值作为估计值的初始值(比如全图像的平均灰度),
然后进行分割图像,产生两组像素,一组大于初始灰度值,另一组小于
初始灰度值,根据产生的子图像的特征来选取新的阈值,在利用新的阈
值分割图像,经过多次循环,使得错误分割的图像像素点降到最小。

Windows下安装
https://digi.bib.uni-mannheim.de/tesseract/可自行下载,点击下一步即可;

# -*- coding: utf-8 -*-
from PIL import Image

im = Image.open('1.png')     #从文件中加载图像
img_gray = im.convert('L')  # 对图片进行灰度化


# ig.save('2.png')   保存灰度化的


'''对图片进行2值化'''
def binarization(ig):
    w, h = img_gray.size
    tmp = 0
    for i in range(w):
        for j in range(h):
            tmp += ig.getpixel((i, j))
    avg_pixel = tmp / w / h
    # 二值化处理
    for i in range(w):
        for j in range(h):
            p = ig.getpixel((i, j))
            if p > avg_pixel:
                ig.putpixel((i, j), 255)
            else:
                ig.putpixel((i, j), 0)
    return ig


# img_bz = binarization(img_gray)
# img_bz.save('3.png')

'''找到噪点范围'''
def point_list(i, j, prange):
    for x in range(i-prange, i+prange):
        for y in range(j - prange, j + prange):
            if x ==i and y==j:
                continue
            yield (x,y)

'''传入需要降噪的二值化图片'''
def reduce_noise(ig):
    w,h = ig.size
    board_rate = 0.06
    prange = 9   #可以改的范围自己调主要是看周围多少黑点
    for i in range(w):
        for j in range(h):
            if i < w * board_rate or i > w * (1 - board_rate) or j < h * board_rate or j > h * (1 - board_rate):
                ig.putpixel((i, j), 255)
                continue
            p = ig.getpixel((i, j))
            if p < 100:
                count = 0
                for x, y in point_list(i, j, prange):
                    if ig.getpixel((x, y)) > 100:
                        count += 1
                if count > 0.5 * ((prange * 2 + 1) ** 2 - 1):
                    ig.putpixel((i, j), 255)
    return ig

# ig_nz = reduce_noise(img_bz)
# ig_nz.save('img_nz.png')  #生成完整的图片方便识别


'''识别图片'''
import pytesseract
pytesseract.pytesseract.tesseract_cmd=r'J:\Tesseract\tesseract.exe'
zhi=pytesseract.image_to_string('img_nz.png')
p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值