黑白简单验证码的识别

简单验证码,例如下图, 验证按摩图片来源:  http://112.122.11.138/cs/RandomPic.aspx

 

     

 

   本例子介绍 基本的识别方法,和思路.

 

  首先, 这个验证码图片是 黑色的背景,白色的字体m,这样的图片识别起来相对比较容易, 如果是彩色的 字体,彩色的背景,识别起来就比较麻烦.

 先将黑底白字,转化为白底黑字,当然这只是 为了一般的识别习惯.

 将新的图片,进行横向和纵向的切割,得到切割后的 4个小图片,规则矩形,没有旁白.

 对每一个小图片进行颜色判断, 比如 白色为0,黑色为1,遍历行和列,得到一组字符串 ,比如 : 001011101001001001001001001001

 进行 人为判断, 这个图片的字符码 代表1, ,另外一个代表 2,依次多试几次, 得到每一个不重复的字符集 的码

 例如下面定义的一个数组,就是所有单个的码:

    

 public string[] zm ={ "0","001011101001001001001001001001",
                                "011110100001000001000001000001000010000100001000010000111111",
                                "011110100001000001000001001110000001000001000001100001011110",
                                "000010000110000110001010001010010010010010111111000010000010",
                                "011111010000010000100000111110100001000001000001100001011110",
                                "011110100001100000100000101110110001100001100001100001011110",
                                "111111000010000010000100000100001000001000010000010000010000",
                                "011110100001100001100001011110100001100001100001100001011110",
                                "011110100001100001100001100011011101000001000001100010011100"};

  

然后遍历,这个 zm数组,得到你要的 数字,最后把这 4个数字 拼起来,就是 你要的 验证码的值.

 

 源代码下载 : 识别简单验证码

 调用方法: 

 
 //sourcebm 为 Bitmap 对象的实例
  string randomCode = new AnalyzeImgCode().ShiBie(sourcebm);
    Console.WriteLine(randomCode);

  下一篇,整理一下,如何解析复杂的彩色验证码, 当然, 我只给思路, 具体情况,要具体分析

posted @ 2014-03-10 18:25  兴想事成  阅读(469)  评论(0编辑  收藏  举报