资源简介
java 验证码识别 ocr
java 验证码识别 ocr
代码片段和文件信息
package cn.pwntcha;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.imageio.ImageIO;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.io.IOUtils;
public class ImagePreProcess {
public static int isBlack(int colorInt) {
Color color = new Color(colorInt);
if (color.getRed() + color.getGreen() + color.getBlue() <= 100) {
return 1;
}
return 0;
}
public static int isWhite(int colorInt) {
Color color = new Color(colorInt);
if (color.getRed() + color.getGreen() + color.getBlue() > 100) {
return 1;
}
return 0;
}
public static BufferedImage removeBackgroud(String picFile)
throws Exception {
BufferedImage img = ImageIO.read(new File(picFile));
int width = img.getWidth();
int height = img.getHeight();
for (int x = 0; x < width; ++x) {
for (int y = 0; y < height; ++y) {
if (isWhite(img.getRGB(x y)) == 1) {
img.setRGB(x y Color.WHITE.getRGB());
} else {
img.setRGB(x y Color.BLACK.getRGB());
}
}
}
return img;
}
public static List splitImage(BufferedImage img)
throws Exception {
List subImgs = new ArrayList();
subImgs.add(img.getSubimage(10 6 8 10));
subImgs.add(img.getSubimage(19 6 8 10));
subImgs.add(img.getSubimage(28 6 8 10));
subImgs.add(img.getSubimage(37 6 8 10));
return subImgs;
}
public static Map loadTrainData() throws Exception {
Map map = new HashMap();
File dir = new File(“train“);
File[] files = dir.listFiles();
for (File file : files) {
map.put(ImageIO.read(file) file.getName().charAt(0) + ““);
}
return map;
}
public static String getSingleCharOcr(BufferedImage img
Map map) {
String result = ““;
int width = img.getWidth();
int height = img.getHeight();
int min = width * height;
for (BufferedImage bi : map.keySet()) {
int count = 0;
Label1: for (int x = 0; x < width; ++x) {
for (int y = 0; y < height; ++y) {
if (isWhite(img.getRGB(x y)) != isWhite(bi.getRGB(x y))) {
count++;
if (count >= min)
break Label1;
}
}
}
if (count < min) {
min = count;
result = map.get(bi);
}
}
return result;
}
public static String getAllOcr(String file) throws Exception {
BufferedImage img = removeBackgroud(file);
List listImg = splitImage(img);
Map map = loadTrainData();
String result = ““;
for (BufferedImage bi :
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 163 2010-08-07 17:32 temp\1235.jpg
文件 156 2010-08-07 17:32 temp\14b7.jpg
文件 161 2010-08-07 17:32 temp\1c64.jpg
文件 170 2010-08-07 17:32 temp\3310.jpg
文件 162 2010-08-07 17:32 temp\37fa.jpg
文件 173 2010-08-07 17:32 temp\3842.jpg
文件 167 2010-08-07 17:32 temp\38f5.jpg
文件 167 2010-08-07 17:32 temp\3d87.jpg
文件 161 2010-08-07 17:32 temp\41f7.jpg
文件 165 2010-08-07 17:32 temp\4c79.jpg
文件 155 2010-08-07 17:32 temp\4f6e.jpg
文件 166 2010-08-07 17:32 temp\5aao.jpg
文件 162 2010-08-07 17:32 temp\5fce.jpg
文件 178 2010-08-07 17:32 temp\7a65.jpg
文件 166 2010-08-07 17:32 temp\7b89.jpg
文件 167 2010-08-07 17:32 temp\86f8.jpg
文件 159 2010-08-07 17:32 temp\93cc.jpg
文件 167 2010-08-07 17:32 temp\b6ee.jpg
文件 161 2010-08-07 17:32 temp\b84a.jpg
文件 159 2010-08-07 17:32 temp\caf3.jpg
文件 169 2010-08-07 17:32 temp\d616.jpg
文件 160 2010-08-07 17:32 temp\fa77.jpg
文件 173 2010-08-07 17:32 temp\o22b.jpg
文件 160 2010-08-07 17:32 temp\ofae.jpg
文件 1183 2010-08-08 23:08 temp3\639ED.jpg
文件 1177 2010-08-08 23:08 temp3\6ABBD.jpg
文件 1178 2010-08-08 23:08 temp3\945E7.jpg
文件 1191 2010-08-08 23:08 temp3\95725.jpg
文件 1186 2010-08-08 23:08 temp3\A85A1.jpg
文件 1176 2010-08-08 23:08 temp3\CBDC7.jpg
............此处省略1102个文件信息
- 上一篇:jsp网上书城
- 下一篇:新浪微博后台登录授权认证
相关资源
- PP软件授权平台 终端授权库Android JA
- 基于JAVA的电信计费系统
- WSO2-JAVA开发集成
- Java500篇
- JavaEE经典MVC框架Struts代码测试通过
- java版电影销售系统有后台包含三层架
- java仓库管理系统SQL
- java-界面组件案例大全(内含139个完整
- Java--web小网站
- Java微信退款
- java+mysql新闻发布网站(含数据库)
- 网上书城项目源码
- Java调用Webservice接口的jar包
- SM3加密 js版和java版
- 基于java的五子棋程序设计毕业论文
- C#调用java直接调用无需生成.net组件
- KWIC4种架构Java实现及4个Assignment
- 企业日常事务管理系统JAVA+SQL2000
- JAVAIO流学习总结转
- Java SuperVCD
- Java mysql 科研信息管理系统(数据库课
- mysql-connector-java-5.1.8
- 日程安排:jQuery的日历插件 FullCalen
- java版超市管理系统java连接数据库
- java流程图生成器
- java实现企业员工信息管理系统完整版
- 当当网网上书店java源代码
- java课程设计-网上超市系统
- javac1.7源代码(完全版,可运行)
- java开源股票系统
评论
共有 条评论