Step 1
准备手写字体,生成图片;
总共写了10个字:你、我、他、分、布、式、计、算、框、架,每个写了10遍
然后写了5个待识别的字:你、我、好、世、界、框、架
图片如下(手机上写的,字丑见谅!)
Step 2
切割图片(抠图),对齐大小至64*64,输出二值化(0-1)点阵,参考了网上的部分代码,java源码如下:
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import javax.imageio.ImageIO;
public class ImageTest
{
static int NORMAL_WIDTH = 64;
static int NORMAL_HEIGHT = 64;
static String FILE_DIR = "/Users/bluejoe/testdata/pics";
public static BufferedImage validateArea(File file) throws IOException
{
BufferedImage bi = ImageIO.read(file);
// 获取当前图片的高,宽,ARGB
int h = bi.getHeight();
int w = bi.getWidth();
int arr[][] = new int[w][h];
// 获取图片每一像素点的灰度值
for (int i = 0; i < w; i++)
{
for (int j = 0; j < h; j++)
{
// getRGB()返回默认的RGB颜色模型(十进制)
arr[i][j] = getImageRgb(bi.getRGB(i, j));// 该点的灰度值
}
}
int left = w - 1, top = h - 1, right = 0, bottom = 0;
int FZ = 130;
for (