2024年2月19日发(作者:)
*/* * * 下面就是识别部份的代码:数字验证码的识别出来并适当地去除一些干扰. * Created on 2007年1月18日, 下午10:00色不一,形状不一的数字图片,本文主要是针对那些比较规范的验证码的识别,何谓规范?规范就是数字的大用字模去和将要识别的图片进行比较,取最接近的那个结果.不过在比较之前必须得到图片里面的数据提取小几乎一致,颜色对比度挺高,没什么干扰线.识别的依据就是最最最基础的办法,比对,先取样,保存成字模,再数字验证码很多地方都会用到,我前段时间也写过一篇有关于生成验证码的文章,那是随机生成大小不一,颜
*/ *//** } static{ //静态初始化块 * 验证码识别程序 * @author hadesleeimport ; initNumModel();public class ImageCode {import tream;import ption; private BufferedImage bi;import O;import Tokenizer;import treamReader; * and open the template in the edImage;package mfan; private static int[][][] model=new int[5][10][208]; * To change this template, choose Tools | Template Manager
} */
} /** */ /** try{ initNumModel(); public ImageCode() { bi= ( is ); * Creates a new instance of ImageCode public String getNumber(InputStream is){ } } } try{ * @param bi return ""; = bi; * @return 结果 return ng(); for(int i=0;i<4;i++){ } catch(Exception exe){ tackTrace(); int[] data=a(i); (k(data)); public String getNumber(BufferedImage bi){ final StringBuffer sb=new StringBuffer(); * 重载的方法,根据传进来的参数得到返回的字符串 } return ""; return ng(); for(int i=0;i<4;i++){ } catch(Exception exe){ tackTrace(); int[] data=a(i); (k(data)); //n(ng()); StringBuffer sb=new StringBuffer();
} */ /** try{ * 用于初始化字模 * 静态初始化方法,
} } } } } break out; who=4; who=3; who=2; who=1; who=0; int who=0; out:while(true){ int index=0; for(int i=0;i<10;i++){ private static void initNumModel(){ //n("初始化model"); StreamTokenizer st=new StreamTokenizer(new InputStreamReader( } catch(Exception exe){ ck(); ignificant(false); paceChars(',',','); paceChars('#','#'); int token=ken(); if(("center")){ }else if(("up")){ }else if(("left")){ }else if(("right")){ }else if(("down")){ if(token==_WORD){ model[who][i][index++]=(int); }else if(token==_EOF){ourceAsStream("/net/bccn/hadeslee/model/programfan_"+i+".mod"))); while(ken()==_NUMBER){
} }
} } */ } } } try { *的文件 tackTrace(); int x=0; return demo; return null; int temp=208; /**根据索引得到 for(int i=0;i<5;i++){ for(int i=0;i } } } } } return temp; temp=x; if(x } } } } }#center } return temp; temp=x; int temp=208; if(x #up#left#right#down0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,达到很高的识别率,更不要说是正体了,这就是另外一个领域了.不是一两句代码就能搞得定的:)方式有很多种,大家仁者见仁,智者见智吧.不过,说句题外话,MOTO的识别就很牛,它对手写字体的支持都能在此算法的实现中主要是针对比较规范的验证码,然后还要针对外形比较相似的6890进行分辨,实现识别的
发布评论