-
到官网下载对应版本的Windows版本,我这里下载的是4.5.x版本,下载后可以得到名为opencv的文件夹
-
在opencv\build\java\opencv-454.jar中找到需要引入的jar包
点击opencv-xxx.exe安装,会下载需要的opencv资源 到opencv目录
java开发-我电脑64位就选择64的.dll:
在项目中加入maven
<dependency>
<groupId>org.opencv</groupId>
<artifactId>opencv</artifactId>
<version>4.5.4</version>
<scope>system</scope>
<systemPath>${basedir}/lib/opencv-454.jar</systemPath>
</dependency>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--在打包插件中设置该值为true,会将本地jar也一起打包-->
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
导入本地包到项目
把opencv\build\java\x64目录下的opencv_java454.dll添加到执行环境 :
第一种:
选择执行的main类,找到VM options 如图:
在VM options 输入存放opencv_java454.dll的路径:
但都要看好自己电脑是64为就选x64,32位就选x86
-Djava.library.path=E:\java_project\siweikeji\ts-uav\java\x64
第二种:
复制opencv_java454.dll放到jdk的安装目标的bin目录下:
C:\Program Files\Java\jdk1.8.0_291\bin
测试代码:
准备两张大小一样的图片,将其合成一张:
代码:
package com.zz.tsuav.utils;
import org.opencv.core.*;
import org.opencv.imgcodecs.*;
public class OpencvUtils {
static{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); }
public static void main(String[] args) {
//System.out.println("Welcome to OpenCV " + Core.VERSION);
//Mat m = new Mat(5, 10, CvType.CV_8UC1, new Scalar(0));
//System.out.println("OpenCV Mat: " + m);
//Mat mr1 = m.row(1);
//mr1.setTo(new Scalar(1));
//Mat mc5 = m.col(5);
//mc5.setTo(new Scalar(5));
//System.out.println("OpenCV Mat data:\n" + m.dump());
try{
//System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
//System.loadLibrary("E:\\java_project\\siweikeji\\ts-uav\\ts-uav\\lib\\x64\\opencv_java454.dll");
Mat src1=Imgcodecs.imread("E:\\java_project\\siweikeji\\ts-uav\\1.jpeg");
Mat src2=Imgcodecs.imread("E:\\java_project\\siweikeji\\ts-uav\\2.jpeg");
//读取图像到矩阵中
if(src1.empty()||src2.empty()){
throw new Exception("no file");
}
Mat dst = new Mat();
Core.add(src1, src2, dst);
Imgcodecs.imwrite("E:\\java_project\\siweikeji\\ts-uav\\3.jpeg", dst);
}catch(Exception e){
e.printStackTrace();
System.out.println("例外:" + e);
}
}
}
结果:
注意点
devtools依赖会和该jar包冲突,报出java.lang.UnsatisfiedLinkError的异常,删掉devtools依赖就不会报错
若打包后直接引用resources的文件会报错,引用绝对路径则不会