怎么用java实现图片里面的数字识别

Python018

怎么用java实现图片里面的数字识别,第1张

图片是由点组成(或者是别的方法),记录点的位置、颜色,控制点就行了。至于ocr,有难度,首先要制作文字的变化范围及整个字各部分的联系,这还是简单的。然后,图像分解就行了。额,我不会编程,稍微会点c++,所以这个回答就是假设如果我做这种程序的思路。

你需要关注的主要是这个类:java.awt.image.BufferedImage

可以查阅相关的API。

java图像处理技术在《java核心技术8 下卷》中有比较详细的介绍。

相关技术要求和注意事项:RGB标准、ICC配置特性、

建议如果进行像素识别的话可以选取关键点的识别方式、而且确认像素是否符合要求使用RGB的范围识别而非精确识别。

至于具体的识别操作过程,需要你详细定义开始识别的位置标准(规定的或者识别图像获取)、边界标准、大小(识别块得SIZE)、分组(给识别块确定属性)等

摘要图像识别是目前很热门的研究领域,涉及的知识很广,包括信息论、模式识别、模糊数学、图像编码、内容分类等等。本文仅对使用Java实现了一个简单的图像文本二值处理,关于识别并未实现。

步骤

建立文本字符模板二值矩阵

对测试字符进行二值矩阵化处理

代码

/*

* @(#)StdModelRepository.java

*

* This program is free softwareyou can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundationeither version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTYwithout even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU Library General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this programif not, write to the Free Software

* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

*/

package cn.edu.ynu.sei.recognition.utilimport java.awt.Imageimport java.awt.image.BufferedImageimport java.io.Fileimport java.io.IOExceptionimport java.util.ArrayListimport java.util.Listimport java.util.logging.Levelimport java.util.logging.Loggerimport javax.imageio.ImageIO/** * Hold character charImgs as standard model repository.

* @author 88250

* @version 1.0.0.0, Mar 20, 2008

*/

public class StdModelRepository {

/** * hold character images

*/ List charImgs = new ArrayList()

/** * default width of a character

*/ static int width = 16 /** * default height of a character

*/ static int height = 28 /** * standard character model matrix

*/ public int[][][] stdCharMatrix = new int[27][width][height]

/** * Default constructor.

*/ public StdModelRepository() {

BufferedImage lowercase = null try {

lowercase = ImageIO.read(new File("lowercase.png"))

} catch (IOException ex) {

Logger.getLogger(StdModelRepository.class.getName()).

log(Level.SEVERE, null, ex)

}

for (int i = 0 i <26 i++) {

charImgs.add(lowercase.getSubimage(i * width,

0,

width,

height))

}

for (int i = 0 i <charImgs.size()i++) {

Image image = charImgs.get(i)

int[] pixels = ImageUtils.getPixels(image,

image.getWidth(null),

image.getHeight(null))

stdCharMatrix[i] = ImageUtils.getSymbolMatrix(pixels, 0).clone()

ImageUtils.displayMatrix(stdCharMatrix[i])

}

}

}

/*

* @(#)ImageUtils.java

*

* This program is free softwareyou can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundationeither version 3 of the License, or

* (at your option) any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTYwithout even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

* GNU Library General Public License for more details.

* You should have received a copy of the GNU General Public License

* along with this programif not, write to the Free Software

* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

*/

package cn.edu.ynu.sei.recognition.utilimport java.awt.Imageimport java.awt.image.PixelGrabberimport java.util.logging.Levelimport java.util.logging.Logger/** * Mainipulation of image data.

* @author 88250

* @version 1.0.0.3, Mar 20, 2008

*/

public class ImageUtils {

/** * Return all of the pixel values of sepecified <code>image<.>* @param image the sepecified image

* @param width width of the image

* @param height height of the image

* @return */ public static int[] getPixels(Image image, int width, int height) {

int[] pixels = new int[width * height]

try {

new PixelGrabber(image, 0, 0, width, height, pixels, 0, width).grabPixels()

} catch (InterruptedException ex) {

Logger.getLogger(ImageUtils.class.getName()).

log(Level.SEVERE, null, ex)

}

return pixels

}

资源来自:

http://blog.csdn.net/chief1985/article/details/2229572