分享
 
 
 

浅谈图形验证码的识别!

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

本问所讲的技术只是验证码识别的初级技术,只能识别一些简单的验证码,比如符合下列部分条件的:字体工整、位置固定、颜色统一、没有干扰点、背静单纯,初步体现了OCR原理(非常弱智:)

本文讲的是通过抓特征点来达到识别目的。图片由一个一个的点(像素)组成,点的颜色变化就组成了我们看见的图片,呈现一个图象就是那几个点按照一定的顺序排列而已。

比如csdn使用的验证码(下图),去掉上下左右的白边,每个数字使用8*12=96个像素,兰色的点就是我们看到的数字了,0-9这10个数字兰色点都是固定的,比如"4"就是是(0, 6)(0, 7)(1, 5)(1, 7)(2, 4)(2, 7)(3, 3)(3, 7)(4, 2)(4, 7)(5, 1)(5, 7)(6, 0)(6, 1)(6, 2)(6, 3)(6, 4)(6, 5)(6, 6)(6, 7)(6, 8)(6, 9)(6, 10)(6, 11)(7, 7)这些点组成如何得到,继续后面。

看起来复杂,实际上是很简单的,先简单处理下,你也许看的很明白,比如csdn登陆的验证码

,用mspaint.exe(画图)打开,放大到800%(查看--自定义--800%),

,这里显示图片是一块一块组成了,现在我们需要把验证码的每个字符独立处理,就要确定字符范围了,如何确定?还是在mspaint.exe中,使用"选定"工具,保证每次划的框刚好把数字完整“框”起来,并且没有多余的空白……稍微花点工夫,就可以确定范围:四个字符的范围范围分别是以(3,4)、(12,4)、(21,4)、(30,4)作为左上角宽度是8高度是12的矩形。这些就是我的源代码里面

Dim Rc1 As New Rectangle(3, 4, 8, 12)

Dim Rc2 As New Rectangle(12, 4, 8, 12)

Dim Rc3 As New Rectangle(21, 4, 8, 12)

Dim Rc4 As New Rectangle(30, 4, 8, 12) 所定义的4个范围的由来了。

选定中的界面

选定后的界面,如果达到上面界面

4个范围(图片处理过,实际上大不到图片的效果)

分解出来以后,就要抓特征点了,比如把上图第一个字符所在的范围单独出来,然后"画图"中鼠标移动到每个兰色点上,记下右下提示的坐标就可以了,下图:

分别把0-10个数字每个特征点记录下来就可以了:)--巨大的工作量???也有简单的办法,用程序自己读兰色点的坐标,我csdn小助手里面的坐标就是另外的一个程序读的。

记录下这些点以后在程序中就抓取这些点判断是不是蓝色,如果全部符合,就可以判断识别这个图片的数字了。

在 .net中如何实现这些过程?

从地址加载验证码图片

Dim Rqq As HttpWebRequest

Dim RPP As HttpWebResponse

Rqq = HttpWebRequest.Create("验证码地址")

Rqq.CookieContainer = New CookieContainer

RPP = Rqq.GetResponse

Dim Img As New System.Drawing.Bitmap(RPP.GetResponseStream)

确定一个矩形范围: Dim 范围 As New Rectangle(3, 4, 8, 12)

复制某个范围的图片: 这个范围的图片 = 大图片.Clone(大图片的矩形范围, 大图片PixelFormat)

得到某个点的颜色 :Img.GetPixel(坐标.X, 坐标.Y)

具体的去看我的”csdn小助手“里面如何实现的吧。

==============

识别率100%,速度极快识别一个的过程一般在几十毫秒级别内,如果要追求更快的速度,使用API直接操作图形,速度更快。

总结 流程:确定范围,记录特征点,然后在程序中比较这些特征点颜色是不是设想的颜色。

====

有人要问,位置不固定,有背景,有干扰色,颜色随机的验证码上该如何?这里不能给你确切的答案,每套验证码系统都有自己的特色,适当分析找出其中的规律:

去背景色:统计每个颜色出现的次数,最多的颜色就是北京色,把这种颜色设置为白色就去掉背景了

干扰点:孤立存在的点也就是上、下、左、右、左上、右上、左下、右下4个点都没有类似点的就是干扰点了

……

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有