内容导航:把要识别的图片上的数字,那就认为这个像素是黑色,Color getRandColor(int fc,int y = (height)
  • 用java写的验证码识别技术原理
  • 使用java如何识别验证码中的文字
  • java实现验证码的自动识别
  • 用Java做一个验证码识别的程序要识别的验证码httpgroupbjchina
  • {image}

    一 、用java写的验证码识别技术原理

    <%@ page contentType="image/jpeg" import=".,.,.,." %>
    <%!
    Color getRandColor(int fc,int bc){//给定范围获得随机颜色
    Random random = new Random();
    if(fc>255) fc=255;
    if(bc>255) bc=255;
    int r=fc+(bc-fc);
    int g=fc+(bc-fc);
    int b=fc+(bc-fc);
    return new Color(r,g,b);
    }
    %>
    <%
    //设置页面不缓存
    ("Pragma","No-cache");
    ("Cache-Control","no-cache");
    ader("Expires", 0);// 在举扒樱内存中创建图象
    int width=60, height=20;
    BufferedImage image = new BufferedImage(width, height, _INT_RGB);// 获取图形上下文
    Graphics g = cs();//生成随机类
    Random random = new Random();// 设定背景色
    (getRandColor(200,250));
    (0, 0, width, height);//设定字体
    (new Font("Times New Roman",,18));//画边框
    //(new Color());
    //(0,0,width-1,height-1);
    // 随机产生155条干扰线 ,使图象中的认证码不易被其它程序探此誉测到
    (getRandColor(160,200));
    for (int i=0;i<155;i++)
    {
    int x = (width);
    int y = (height);
    int xl = (12);
    int yl = (12);
    (x,y,x+xl,y+yl);
    }// 取随机产生的认证码(4位数字)
    //String rand = ter("rand");
    //rand = (0,("."));
    String sRand="";
    for (int i=0;i<4;i++){
    String rand=((10));
    sRand+=rand;
    // 将认证码显示到图象中
    (new Color(20+(110),20+(110),20+(110)));//调用函数出来的颜色相同,可能是因为种正丛子太接近,所以只能直接生成
    g(rand,13*i+6,16);
    }// 将认证码存入SESSION
    ute("rand",sRand);
    // 图象生效
    ();// 输出图象到页面
    (image, "JPEG", Stream());
    ();
    out = ();
    %>

    二、使用java如何识别验证码中的文字

    自己看~~~~~~~肯定有真实数据对应 ,你还识别文字呢1、在图形验证码程序的生成过程中(一般中servlet中生成) ,使用ute("code",yourcode);

    2 、在jsp页面接收是用ute("code")即可

    希望能够帮到你,
    如若你有不清楚的,欢迎探讨。
    淘宝会员:宜人家园

    三 、java实现验证码的自动识别

    方式比较多 ,用一个二维数组存放,如a[5][5]={{,,,,},{"1212","1233","2323","","郑拆并"}},可以动态的生成一个小于5的数字 ,直接把生成的数字和下标对应,在和后面的的字御戚符串比较喊迹就可以自动验证了

    四、用Java做一个验证码识别的程序要识别的验证码httpgroupbjchina

    验证码识别,费力效果差 ,除非非常简单的图片,否则极难识别,而让游且验证码图片的代码 ,人家只需要稍微弄复杂点,识别的复杂度直线上升,成功率直线下降 。像hotmail, google, yahoo那种就直接放弃 ,

    不过像这种简单的 ,你可以试试,用模式匹配:

    例如单个数字大小是16 * 16像素, 那就划分成16*16块 ,每个块1个像素,编号,特征就是a[0][0] - 白 , a[0][1] - 白, a[0][2]黑空滑念……这种,存下来,把要识别的图片上的数字 ,也这样处理,然后跟保存下来的特征码进行匹配就行了,看看有多少是一样的 ,超过50%就可以认为找到了,或者把阈值设更低点

    难点在于要识别的图片上面有干扰点,要排除 ,以你给出的图片来说 ,可以这样:
    1. 先统一黑白:如果一个像素跟白色很接近,就认为是白色,否则认为是黑色。(如果底色是随机的 ,那就把区域色块最大的认为是白斗困色,其他的黑色)
    2. 每个像素周围有8个像素,计算出这个区域内的平均灰度 ,例如这9个点中超过4个是黑色,那就认为这个像素是黑色

    本文版权归趣快排营销www.SEOguruBLOG.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ㊣61910465