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二值化处理图片

  • 相关阅读:
    [转]K/3加密控制规则
    修改Delphi2009的界面风格
    [转]软件版本号讲解: 什么是Alpha, Beta, RC
    百度程序题目连续数问题
    得到正整数a的16进制表示
    四舍五入至某小数位后返回数字串
    返回相同宽度数字型字符串
    百度程序题目连续数问题 另解
    求二进制表示中1的个数
    六支筷子取其二,恰为一双的概率
  • 原文地址:https://www.cnblogs.com/qjmnong/p/9160833.html
Copyright © 2011-2022 走看看