(本文仅用于学习研究图像匹配识别原理,不得用于其他用途。)
最近看了看验证码的识别,先从最简单的做起吧(固定大小,固定位置,固定字体)
验证码识别基本分四步,图片预处理,分割,训练,识别
看一个最简单验证码
这是一个德克萨斯扑克的注册页面的验证码
1。图像的预处理
这种直接根据亮度设个阈值处理就可以了
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;
}
处理完图片效果为
图像基本分得比较清楚,图片分割也比较容易
2。分割
这个验证码居然是固定位置的,分割相当简单,直接截取相应位置就可以了
public stat