图片验证码识别教程----醉若星(原创,1~3章加源程完整版)
醉若星 原创好久没写教程了,今天放上一个教程,就是教你如何做一个识别验证码的教程,比较实用,特别是想干坏事的时候。-_-!!!
好了,废话就不说了,直接就开始我们的教程吧。现在网上关于验证码的识别的教程相对来说比较少,在这里我就写一个比较简单的,其实对于验证码的识别的话原理其实都差不多。具体是怎样的,大家往下看就明白了~~~
第一部份 图片的组成及特征码的定义
做为验证码的识别,那我们首先需要了解的就是基本的原理,这里就是先说清楚这个原理,再往后大家看代码就比较容易明白了(其实本来就比较简单,我说这么多就是为了大家看完不说我的水平次罢了。再次爆汗~!)
正题了,其实整个验证码的识别的话我们先得分解一个图,每一个图形其实都是由每一个点和每一个点来组成的,说到每个点其实就是一个色块,当每一个色块拼接起来就成了一个图形,这个虽然说有点废话,但我还是提一下。
需要更好的理解我们来看图:
图一 图二
通过上面的两幅图片我们就能很清楚的知道色块情况了,每一个小块就是一个色块,有些用白色来表示,而整个图的点则也是通过坐标来识别的,X,Y两个点,这样我们就不难分清行和列了,当我们取色块X1,Y1就是指取出第一行,第一列,如果我们取色块为X2,Y5则是指第五行,第二个色块。呵呵!
色块了解了,我们可以通过取色块中的颜色来做为一个比较和判断的识别标准。我们对一个图中的数字进行取色,当颜色的值为黑色(0)时,我们将点记录为1,当所取的点值为白色(255)时,我们将点记录为0。这样整张图取下来,我们就会得到一个字符串,格式如下:
0000000000000000000000000000000000000000000000000000000000000000000000000000000000111111111111111100001111111111111111001100000000000000001111000000000000000011110000000000000000111100000000000000001111000000000000000011110000000000000000111100000000000000001111000000000000000011001111111111111111000011111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000
上面的这段类似二进制的字符串就是我们从图一中提出来的东西了,我们称这一个字符串为这张图片的特征码。这个特征的解读我们利用前面所说的知识来自己解读一下,以图一为参考,图一中的前面的四列都是白色,所以我们的特征码中开始好多个零。>_<
从第五列开始,除了前面的两格是白色,接下来就是黑色了,这样我们开始数一下,就是应该有82个零,然后开始是1,嘿嘿~~~大家可以数一下。接着就开始到了黑色部份了,这里应该有11个黑色块,在我们的特征码中有11个1。这样的话大家就很清楚,这个特征码的结构了。
好,现在对图片的解读我们已经很清楚了,接着就是用代码来实现了。未完待续(用代码实现特征码提取)
PS:别怪我,要上班,只能发一段段的东西了。--
[[italic] 本帖最后由 pacocai 于 2008-1-17 10:24 编辑 [/italic]]