zoukankan      html  css  js  c++  java
  • 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:openCvopencvuildjava这个目录下的一个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二值化处理图片

  • 相关阅读:
    codeforces 980A Links and Pearls
    zoj 3640 Help Me Escape
    sgu 495 Kids and Prizes
    poj 3071 Football
    hdu 3853 LOOPS
    hdu 4035 Maze
    hdu 4405 Aeroplane chess
    poj 2096 Collecting Bugs
    scu 4444 Travel
    zoj 3870 Team Formation
  • 原文地址:https://www.cnblogs.com/qjmnong/p/9160833.html
Copyright © 2011-2022 走看看