Java基于opencv实现图像数字识别

Posted 奇迹迪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java基于opencv实现图像数字识别相关的知识,希望对你有一定的参考价值。

Java基于opencv实现图像数字识别(一)

最近分到了一个任务,要做数字识别,我分配到的任务是把数字一个个的分开;当时一脸懵逼,直接百度java如何分割图片中的数字,然后就百度到了用BufferedImage这个类进行操作;尝试着做了一下,做到灰度化,和二值化就做不下去了;然后几乎就没有啥java的资料了,最多的好像都是c++,惹不起、惹不起......

我也想尝试着用c++做一下,百度到了c++基于opencv来做图像识别的;但是要下vs啊,十几个g呢,我内存这么小,配置这么麻烦,而且vs各个版本又有自己的特色;百度了以下,java基于opencv来做图像识别,发现也很少,但是有资料啊,而且配置也很简单啊,能做到就做到哪,慢慢学;现在我已经做到切割图片了,用的是投影法,效果还可以。可以先看以下

Java基于opencv实现图像数字识别

我们来一步步实现,先从下载opencv、配置java环境、写一个测试用例开始;肯定比你想象中的要简单

一、下载opencv,我用的是windows系统,这个应该没啥区别吧,java跨平台的

直接百度搜索opencv,建议去opencv中文网站下载吧;我刚开始下载的时候,下到一大半的时候突然停了,就这样停了;明明中文网站啊,还需要梯子吗;算了,我还是翻墙吧,然后就下好了,一步步安装,就好了,没啥难的。安装好后,就长这样,我也没有配置环境;

安装opencv

二、配置java开发环境

也很简单,就是把F:\\openCv\\opencv\\build\\java这个目录下的一个jar添加到环境变量,然后看你是系统是多少位的,把相应目录下的文件拷贝到你的项目中

opencv配置java开发环境

空项目大概就是这样
opencv-java空项目

三、我们测试一下,就用opencv二值化处理一张图片

我们来看一下代码

public static void main(String[] args) {
		// 这个必须要写,不写报java.lang.UnsatisfiedLinkError
		 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

		File imgFile = new File("C:/Users/admin/Desktop/open/test.png");
		String dest = "C:/Users/admin/Desktop/open";
		Mat src = Imgcodecs.imread(imgFile.toString(), Imgcodecs.CV_LOAD_IMAGE_GRAYSCALE);

		Mat dst = new Mat();

		Imgproc.adaptiveThreshold(src, dst, 255, Imgproc.ADAPTIVE_THRESH_MEAN_C, Imgproc.THRESH_BINARY, 13, 5);
		Imgcodecs.imwrite(dest + "/AdaptiveThreshold" + imgFile.getName(), dst);
	}


我们来看一下效果图
opencv二值化处理图片

以上是关于Java基于opencv实现图像数字识别的主要内容,如果未能解决你的问题,请参考以下文章

基于OpenCV和C++原生(JNI)的Android数字图像处理+人脸识别demo

图像识别 基于Keras的手写数字识别(含代码)

基于SVM,KNN,CNN的数字图像识别

基于Opencv实现车牌图片识别系统

用opencv定位和识别数字如何识别呢,急求~~~~~~~~~

如何使用opencv实现图像匹配