学校教务网验证码识别
程序员文章站
2022-06-13 19:04:42
...
1、取出字模:取字模时,我们需要多下载几张图片,使这些图片中,包括所有的字符。
2、图像的预处理:图像的预处理,这种直接根据亮度设个阈值处理就可以了
处理后结果(变成黑白)
3、对图片特点进行分析:找出规律
4、去噪: 去除干扰线
去噪前
去噪后
原理: 获取每个像素点的周围8个像素值,如果周围大于3个点是黑点(根据实际情况设定),就把它设为白点,其它全设为黑点 就得到上图
5、切割:根据找出的规律对图片进行切割,如果没有规律可以根据算法切割
(算法提示:以X轴横向扫描,计算每个Y轴白点的像素,当Y轴的白点超过一个值(根据图片自己设定),记下此时的X轴坐标为:X1,当Y轴白点继续大于设定值就继续往后扫描,当Y轴白点为0时,记下此时的X轴坐标为:X2,判断这个距离是否有一个字符的宽度,如果有就认为这是一个字符的宽度,开始纵向切割,然后再横向切割)
纵向切割后得到的图
横向切得到的图
如果图片有规律,则根据坐标直接切。
6、训练:取去噪后的图片,以验证码内容命名,如下图:
用写好的切割代码,对图片进行切割保存并命名:
7、识别输出:读取需要识别图片与图片库进行对比,在一定误差允许范围内,取图片库误差最小的图片,并获取图片名的第一个字符
如上图图片在识别时被被切割4份后,拿每份与图片库图片比较,此时图片库2-17.jpg与其误差最小,就取2这个字符,返回
最后我的识别结果为:
随进抽取部分图片看结果:
发现3个错误
继续看
发现2个错误
到此发现识别接果还挺让人满意的,简单计算了下 正确有80%左右。
推荐阅读