一个图片识别小工具,原先主要是识别以前公司的软件注册码截图里的数字和字母(每次要一个一个框复制出来粘贴到注册器里,很麻烦!),因为注册码出现的字母和数字基本就那几个,所以识别库的范围设定的比较少。
原理和算法在代码中做了详细说明,功能存在很大的局限性,但我的想法是把这个思路和实现的办法共享出来。
源码下载地址:
http://git.oschina.net/bobo2cj/iamge2text
/* * 开发思路:图片灰度处理,二进制,然后和图片中的字二进制库精确对比 * * 获取字库:通过下面代码中generateLicense(Bitmap singlepic)方法获得,具体操作: * 从图片中截图出(抠出)一个字符,然后处理得到二维的二进制矩阵,比如下面的字符1对应的二维矩阵 * 00000 * 00100 * 11100 * 00100 * 00100 * 00100 * 00100 * 00100 * 00100 * 11111 * 00000 * 00000 * * 注意:【相同字符,比如1,不同字体,字号,不同缩放大小的图片,获得到的二位矩阵中0、1排列和数量都是不同的! * 故按照此方法来写出匹配所有字的话,那字库就大了。。。】 * * */ ////// 提取出该图片内的字符(将进过灰度处理的图片转化为0、1的二位数组) /// /// 图片来源 public void generateLicense(Bitmap singlepic) { try { char[,] charArray = new char[singlepic.Height, singlepic.Width]; //定义个chai型的二维数组记录每个像素上0/1的值,形成一个矩形 int imageWidth = 0; //记录图片的像素宽度 int imageHeight = 0; //记录图片的像素高度 int dgGrayValue = 128; //灰度值 Color piexl; //string code = ""; //存储每个像素的0/1 for (int posy = 0; posy
以上所述就是本文的全部内容了,希望大家能够喜欢。