学校教务网验证码识别

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%左右。

猜你喜欢

转载自hetaoo.iteye.com/blog/2320237