最近使用OpenCV进行后台的二维码识别,也用了别的方式但是识别的都不是很精准,对比一下还是OpenCV最准确,由于第一次使用,在windows下使用IDEA开发和部署Linux服务器后遇到了很多问题,在这特别记录一下。

一、windows环境下进行开发:

1.官网下载安装包

(1)Opencv官网:https://opencv.org/

在这里插入图片描述

(2)选择windows版本

在这里插入图片描述

2.解压安装包

解压安装包的目的是获取其中的jar包和dll文件,很多教程都是直接安装安装包,效果都一样。
jar包路径:opencv-4.6.0-vc14_vc15\opencv\build\java\opencv-460.jar
dll文件路径:opencv-4.6.0-vc14_vc15\opencv\build\java\x64\opencv_java460.dll
dll文件根据你的系统是多少位进行选择

3.项目中引入jar包

(1)在项目中新建lib文件夹用来存放引入的jar包,直接将jar包放进去就行。

在这里插入图片描述

(2)在pom.xml中引入jar包,systemPath填写上一步新建lib文件的路径。
<dependency>
    <groupId>opencv</groupId>
    <artifactId>opencv</artifactId>
    <version>460</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/lib/opencv-460.jar</systemPath>
</dependency>
(3)这时候如果你直接运行的话,会提示 Caused by: java.lang.UnsatisfiedLinkError: no opencv_java460 in java.library.path,这是因为缺少dll文件引起的。

在这里插入图片描述

(4)添加dll文件,解决 no opencv_java460 in java.library.path 异常。

将dll文件放到计算机系统System32文件夹下,路径:C:\Windows\System32
在这里插入图片描述

(5)测试

测试代码

// 测试OpenCV是否安装成功
public static void main(String[] args) throws Exception {
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);
    System.out.println("mat = " + mat.dump());
}

运行结果
运行结果

二、Linux环境下进行部署:

1.官网下载安装包

Opencv官网:https://opencv.org/
选择Linux压缩包版本
在这里插入图片描述

2.安装

(1)安装依赖
# 缺什么就下什么,其中cmake是最重要的
yum -y install epel-release
yum install gcc gcc-c++  
yum install cmake 
yum install python-devel numpy 
yum install ffmpeg-devel
yum install -y unzip zip
(2)解压opencv
# 解压
unzip opencv-4.6.0.zip 
# 进入解压后的目录
cd opencv-4.6.0
# 创建名为build目录存放后续生成的一些东西
mkdir build
# 进入build目录中
cd build
(3)编译

这一步所需要的时间较长,请耐心等待。

cmake -D WITH_TBB=ON -D WITH_EIGEN=ON ..    
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=<你想要安装的路径> .. 
make 
make install

yum install ant
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=<你前面设置的安装路径> -DBUILD_TESTS=OFF ..
make -j8
make install
(4)测试

如果一切正常,则成功编译生成了OpenCV。确保以下文件被打包在相应的目录中。

/opt/opencv-4.6.0/build/lib/libopencv_java460.so
/opt/opencv-4.6.0/build/bin/opencv-460.jar

三、出现的问题:

1.Caused by: java.lang.UnsatisfiedLinkError: no opencv_java460 in java.library.path

(1)Windows环境下

在这里插入图片描述
解决方法:将dll文件放到计算机系统System32文件夹下,路径:C:\Windows\System32

(2)Linux环境下

在这里插入图片描述
解决方法:将安装opencv生成的so文件(路径:/opt/opencv-4.6.0/build/lib/libopencv_java460.so)放到/usr/lib64/目录下

2.运行时提示类未创建成功

(1)Windows环境下

解决方法:使用静态代码块加载库

// 得保证先执行该语句,用于加载库,才能调用其他操作库的语句
static {
	System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
(2)Linux环境下

解决方法:System.load加载生成的so文件

static {
	System.load("/opt/opencv-4.6.0/build/lib/libopencv_java460.so");
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐