用Java+OpenCV学习计算机视觉
用Java+OpenCV学习计算机视觉
本学期的计算机视觉课程,本人打算使用Java+OpenCV来进行完成(因为对C++不是那么熟悉,但是Java下的OpenCV教程比较少,如果无法完成就使用C++进行完成)
HelloCV程序的编写
下载OpenCV,导入jar包,放置dll文件
OpenCV官网: https://opencv.org/releases/.现在已经更新到4.2.0版本了,那就下载最新版本就可以了,由于下载速度较慢,而且不是所有的文件都需要,所以我把需要的文件和代码都放在github上面了,(dll和jar文件我另外放在微云上面吧,从github下载也比较慢)。
具体是需要下面这两个文件:
其中我们要把第一个dll文件放到我们的jdk的bin目录文件夹下,如我的jdk目录是D:\Java\jdk-11.0.5,就把这个dll文件放在jdk的bin文件夹里面。
如果是高版本的IDEA,会默认使用Jetbrains自带的JDK,目录是你的IDEA的安装目录的jbr目录就是自带的JDK目录了,如我的是:D:\IntelliJ IDEA 2019.3.3\jbr,我们把刚才的dll文件复制到这个目录下面的bin文件夹里面就可以了。
第二个jar文件就从IDEA导入就可以了。
下面我们来测试我们的环境是否正常。
测试代码
由于我们的Java内要绘制图像最常用的就是使用JFrame,但是这个无法绘制我们的OpenCV的Mat对象,所以我们可以使用其官方的转换函数:HighGui.toBufferedImage(mat);
就可以实现Mat到Java的Image对象了。
测试代码如下:
(由于这个比较常用,所以可以写到一个工具类-CvUtils类里面,方便日后进行调用,也方便后续的增加其他工具函数)
/**
* 将OpenCV的mat类型转化为Java的Buffer额度Image类型
* @param matrix opencv的mat
* @return 转化后的BufferedImage
*/
public static BufferedImage Mat2BufImg(Mat matrix) {
return (BufferedImage