Java应用OpenCV指南其一:在Java中安装与配置OpenCV

来源:互联网 发布:ipad怎么在淘宝找微淘 编辑:程序博客网 时间:2024/05/18 00:43

Java应用OpenCV指南其一:在Java中安装与配置OpenCV
因为之前我在读研期间学习java的过程中花了一段时间学习模拟登陆方面的知识,对登陆过程中的验证码问题有些兴趣。于是花了一段时间研究验证码识别技术,也是经过同学的推荐认识了OpenCV。
不过由于之前我一直使用Java的开发环境,而网上可以找到的详细OpenCV教程几乎都基于C++,应用起来的过程十分痛苦。不过经过一段时间的摸索和学习,我总算积累了一些再java环境下应用OpenCV进行图象处理的知识。现在写下来,一方面是分享经验,另一方面也是为自己前段时间的工作做个总结。
我使用的OpenCV版本是3.3,写下这篇文章的时候官网已在更新3.4版本。
首先是环境配置,这方面网上可以找到一些,在这里我记录一下自己的配置过程。

安装环境:Eclipse 、java 1.8.0

  1. 下载OpenCV
    在官网上下载Windows版本的OpenCV然后下载下来
    这里写图片描述
    然后根据个人习惯解压到指定位置(如F:\tools)

  2. 打开Eclipse,依次选择【Window(窗口)】->【Preferences(首选项)】,在弹出的窗口中选择【Java】->【BuildPath(构建路径)】->【User Libraries(用户库)】,在右侧点击【New(新建)】,在弹出的窗口中输入库名,建议输入名称加版本号便于区分(如opencv3.3.0),完成后确定,可以看到刚刚新建的库。
    这里写图片描述

  3. 选中刚刚新建opencv3.3.0,【Add External JARs(添加外部JAR)】,选择下载的OpenCV目录下jar文件的路径(如F:\tools\opencv\build\java\opencv-330.jar),成功添加后展开opencv3.3.0库,选中Native library location(本机库位置),然后点击右侧【编辑】。注意自己机器的操作系统,以我为例
    64位添加至:F:\tools\opencv\build\java\x64
    32位添加至:F:\tools\opencv\build\java\x32
    点击确定完成。
    这里写图片描述

  4. 在项目中引入OpenCV
    配置完成后就可以向项目中引入OpenCV了。点开需要引入的项目在文件夹上点击右键选择【Build Path(构建路径)】->【Add Libraries(配置构建路径)】,在窗口中选择【库(Libraries)】->【Add Library】,然后选择【User Library(用户库)】->【Next】,可以看到我们之前创建的库,选择它,点击【Finish】。
    1)
    这里写图片描述
    2)
    这里写图片描述
    3)
    这里写图片描述
    4)
    这里写图片描述
    添加后库文件会默认沿用上面做的配置,如果没有的话右击项目中的OpenCV库文件,选择【BuildPath(构建路径)】->【Add Libraries(配置构建路径)】重复上面第三步的操作即可。至此OpenCV就配置完了,如果你还下载了OpenCV的架包的话,也可以添加在库文件中的源代码链接中。

  5. 测试
    配置完成后可以用一段代码测试OpenCV的可用性:
package opencv;import org.opencv.core.*;public class one {static{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);};  //用来调用OpenCV库文件,必须添加    public static void main(String args[]){        Mat a=Mat.eye(3, 3, CvType.CV_8UC1);  //输出一个3X3的对角矩阵        System.out.println(a.dump());    }}

输出结果:
这里写图片描述

创建矩阵时的第三个参数为类似CV_8UC1,CV_8UC2,CV_16UC3这样的值,作用是设置矩阵中每个点的位数和通道数。
8代表8bite,16为16bites等等,如果你现在创建了一个存储灰度图片的Mat对象,这个图像的大小为宽100,高100,那么,现在这张灰度图片中有10000个像素点,它每一个像素点在内存空间中所占的空间大小是8bite,8位。所以它对应的就是CV_8。
第一个字母可以为S|U|F。S代表signed int,有符号整形;U代表unsigned int,无符号整形;F代表float单精度浮点型;
第二个字母C代表一张图片的通道数,1为灰度图片grayImg,是单通道图像;3为RGB彩色图像,是3通道图像;4为带Alph通道的RGB图像,是4通道图像。
OpenCV中操作的基本单位是矩阵(Mat),关于矩阵的基本操作我们之后再说。

原创粉丝点击