最近使用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环境下
解决方法:使用静态代码块加载库文章来源:https://www.toymoban.com/news/detail-459360.html
// 得保证先执行该语句,用于加载库,才能调用其他操作库的语句
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
(2)Linux环境下
解决方法:System.load加载生成的so文件文章来源地址https://www.toymoban.com/news/detail-459360.html
static {
System.load("/opt/opencv-4.6.0/build/lib/libopencv_java460.so");
}
到了这里,关于SpringBoot使用OpenCV开发和部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!