php实现验证码识别-中级篇

逸学堂 2009-03-10 11:14:47
这篇文章是
http://topic.csdn.net/u/20090303/15/0bec0070-e387-4611-aac8-721df3207b33.html
的继续。
php识别验证码初级篇,只提供了针对特定位置,特定字体的数字验证码识别技术。本篇文章尝试识别旋转字体,字符粘连的数字和字母的验证码,同时还进一步增强了去杂点功能,增加了bmp转jpeg的功能,还增加了学习功能(需要手工支持)。
在上篇文章<php实现验证码的识别(初级篇)>中,讲了如何识别简单的验证,这里的简单只的是验证码有数字和字母组成,格式统一,每次出现位置固定。这篇文章将继续深入研究识别验证码,这次识别的目标是,验证码有字符和数字组成,验证码存在旋转(可能左右都旋转),位置不固定,存在字符与字符之间的粘连,且验证码有更强的干扰素。这篇文章讲解的方法,并不是万能的解决方案,并且提供代码不能直接解决你的问题,这里仅仅是方法,具体需求读者自己解决,需要说明的是,识别验证码与具体的编程语言无关,这里只是使用php语言实现,使用这里介绍的方法,你可以使用任何语言实现。

这篇文章逐步讲解识别验证码过程中的各个步骤。


如上图,随后的讲解我们都围绕此图展开。
一:拿到一个验证码的,第一眼我们首先要做的工作是,二值化。把验证码的部分用1表示,背景部分用0表示出来,识别方法很简单,我们打印出验证码正张图片的RGB,然后分析其规律即可,通过RGB码,我们很容易分辨出上面这张图片的R值大于120,G和B的值小于80,所以依据这个规则我们很容易把上面的图片二值化。再看初级篇中识别的两张图

刚看上去,感觉很复杂。验证码的图片每次背景色都不相同,且不是单色,各个验证码数字的颜色每次也各不相同。貌似很难二值化,其实我们打印出其RGB值很容易就发现。无论验证数字颜色如何变化,该数字的RGB值总有一个值小于125,所以通过如下判断

原文URL: http://blog.csdn.net/ugg/archive/2009/03/09/3972368.aspx
代码下载:http://download.csdn.net/source/1084418

欢迎拍砖
...全文
14293 点赞 收藏 193
写回复
193 条回复
davenfox 2012年09月27日
正关注这方面内容
回复 点赞
a317275186 2012年09月26日
现在好寂静!
回复 点赞
liangphy 2012年09月09日
好文章,支持一下
回复 点赞
wyfytangsh 2012年09月05日
验证码好处多多啊,可以防止垃圾留言。。也可以防止别人暴力破解密码
回复 点赞
游牧小小诗人 2012年08月24日
改明儿就有人弄个,让你用鼠标跟随图画箭头完成简单画图通过验证的方法。
回复 点赞
wzl610 2012年08月17日
很不错,学习了
回复 点赞
lbyyy 2012年07月30日
又一种识别思路!好!
回复 点赞
Get2013 2012年07月12日
感谢楼主提供源码啊
回复 点赞
Get2013 2012年07月12日
我嘞个擦 真牛B
回复 点赞
深圳拾荒者2018 2012年04月08日
天天是
回复 点赞
angelfly5262011 2011年11月22日
用c语言写破解验证码的程序会比较好吗?
回复 点赞
drise123 2011年11月07日
那我给你提供代码吧
http://www.111cn.net/phper/php-gj/33429.htm
回复 点赞
xiaohei1982000 2011年11月01日
大家好,http://topic.csdn.net/u/20111031/18/71dcaf96-59bd-49d7-9e0c-435134bb3b51.html?seed=922647640&r=76262639#r_76262639 这个帖子看看能有办法帮忙解答下吗?此外咨询下ems的验证码能不能不用识别直接用php实现免验证码呢?谢谢。
回复 点赞
ZeoJon 2011年09月26日
LZ的下捏
回复 点赞
csusnb 2011年09月24日
牛 长 长 学习了。
回复 点赞
wulingwang 2011年09月02日
好帖!
回复 点赞
congyufei 2011年07月12日
学习了。
回复 点赞
tyfee 2011年07月09日
期待高级篇!
回复 点赞
cbcfrank 2011年07月04日
拜读此贴,日子已过了两年
回复 点赞
杰克船长的微笑 2011年06月29日
学习了
回复 点赞
发动态
发帖子
PHP
创建于2008-08-27

8545

社区成员

1.9w+

社区内容

“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
社区公告
暂无公告