说到语音识别、语音翻译、图像识别、人脸识别等等,现在已经非常非常非常普及了,看过‘最强大脑’的朋友,也应该对‘小度’这个机器人有所了解,战胜国际顶尖的‘大脑’- 水哥,(PS:内幕不知),那么今天,我们来看下关于图像识别,是如何做到的,Java又是如何识别图像的?
图像识别技术是人工智能的一个重要领域。为了编制模拟人类图像识别活动的计算机程序,人们提出了不同的图像识别模型。例如模板匹配模型。这种模型认为,识别某个图像,必须在过去的经验中有这个图像的记忆模式,又叫模板。当前的刺激如果能与大脑中的模板相匹配,这个图像也就被识别了。
图像识别场景
1:人脸识别
2:车牌识别
图像识别原理
原理:
人脸识别系统主要包括四个组成部分,分别为:人脸图像采集及检测、人脸图像预处理、人脸图像特征提取以及匹配与识别。
车牌识别过程:
车牌预处理---字符分割--归一化处理--细化处理--字符特征提取--神经网络训练。
基本过程:
JAVA图像识别示例
Java图像识别示例:
需求:java实现图像识别--车牌识别
技术:Java、jdk1.8、maven、tess4j、IDEA2018
1:新建maven project工程,如图
2:导入tess4j包,代码如下:
<!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j -->
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>3.4.8</version>
</dependency>
3:下载tess4j-3.4.8-sources源码,并将其中的tessdata文件夹,复制到工程中,和src目录保持同一级
4:如果是识别中文图片,则需要自行下载中文检测包chi_sim.traineddata,并将chi_sim.traineddata文件放到tessdata文件夹下
下载地址:https://raw.githubusercontent.com/tesseract-ocr/tessdata/master/chi_sim.traineddata
其它检测包下载地址:https://codeload.github.com/tesseract-ocr/tessdata/zip/master
5:添加java图像识别类,调用tess4j框架,如下:
package com.ms.ocr;
import java.io.File;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
/**
* java图像识别
* likang
* 2018-7-13
*/
public class OCRDemo {
public static void main(String[] args) throws TesseractException {
ITesseract instance = new Tesseract();
//如果未将tessdata放在根目录下需要指定绝对路径
//设置训练库的位置
//instance.setDatapath("the absolute path of tessdata");
//如果需要识别英文之外的语种,需要指定识别语种,并且需要将对应的语言包放进项目中
// chi_sim :简体中文, eng 根据需求选择语言库
instance.setLanguage("chi_sim");
// 指定识别图片
File imgDir = new File("D:\\38_tess4j\\images\\4.png");
long startTime = System.currentTimeMillis();
String ocrResult = instance.doOCR(imgDir);
// 输出识别结果
System.out.println("识别结果: \n" + ocrResult + "\n 耗时:" + (System.currentTimeMillis() - startTime) + "ms");
}
}
图片内容:
识别结果:
接下来,我们将图片换成车牌,如下:
识别结果: