Python 学习笔记(七)验证码识别1 整体算法 (

来源:互联网 发布:黑马程序员每天演讲 编辑:程序博客网 时间:2024/05/16 09:05
2014-10-08 06:48:11)
转载
标签: 

python

 

验证码识别

 

图像处理

 

算法

 

图像切割

 

杂谈

分类: 工作

     

http://blog.sina.com.cn/s/blog_620987bf0102v2zc.html

最近通过对Python的使用发现Python的确是们强大的语言,所以用python实现了下验证码的识别。

     由于本人技术水平一般,所以只研究了比较普通的验证码,这种验证码由4位数字组成,每位数字可能会左右倾斜,而且在图片上的高度会有变化,背景上会有杂色和噪点。我认为是识别难度中等偏低的一种验证码,但是还是比网上公开的验证码识别算法针对的要复杂不少。

     对于验证码识别,首先要安装python的图像处理库PIL,不过PIL由于安装经常有问题,而且更新慢,尤其是对64位系统支持不足,所以建议安装替代的模块Pillow。

 

     安装了Pillow后,就是基本的算法设计了,大致分为以下几个步骤:

    (一)图像预处理,这里有对图像的格式转换,灰度化,对比度改变,锐化,转为黑白图像,去除噪点等一系列操作。

    (二)图像切割,通过寻找空白行和空白列,将图像切割为4块,并将处理后的图片保存,再将图片上的黑白像素情况保存为txt文档,以便进行后续的比对和识别。

    (三)处理素材,形成素材库。通过步骤一和二,将提前下载的验证码图片库的图像处理,存为txt文档,以作为后续的识别比对的基础。为了保证后续的识别处理速度,建议将处理后的txt文档中的数据统一处理为一个比对数组,这样比对时直接从内存进行比对,不用不断打开txt文档,速度较快。

    (四)实时下载验证码图片,按照步骤一和二处理后,与步骤三形成的素材库进行比对,得出验证码图片对应的结果。这里由于验证码的图片难以获取当时的真实信息,所以我采用了截屏获取验证码的方法。而且由于验证码网站的验证码点击刷新机制的原因:点击验证码后刷新的图片对应的数字始终都一样,只是图片样式有所变化,点击刷新多次后,可以截屏裁剪出多个对应相同数字的图片,得出多个识别的结果后,分别统计验证码的4位数字中每位数字出现次数最多的是哪个数字,从而作为最终的识别数字,可以大大提高图片识别的成功率。通过一段时间的运行,大概的识别率在90%左右,足够高,而且完成一次正确的识别的整体运行时间大概在15秒以内,速度还算可以。

 

 

0 0
原创粉丝点击