• SpringBoot使用OpenCV开发和部署


    最近使用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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    (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());
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行结果
    运行结果

    二、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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    (2)解压opencv
    # 解压
    unzip opencv-4.6.0.zip 
    # 进入解压后的目录
    cd opencv-4.6.0
    # 创建名为build目录存放后续生成的一些东西
    mkdir build
    # 进入build目录中
    cd build
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    (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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    (4)测试

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

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

    三、出现的问题:

    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);
    }
    
    • 1
    • 2
    • 3
    • 4
    (2)Linux环境下

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

    static {
    	System.load("/opt/opencv-4.6.0/build/lib/libopencv_java460.so");
    }
    
    • 1
    • 2
    • 3
  • 相关阅读:
    ld.lld的unknown file type错误
    初识生成对抗网络(11)——利用Pytorch搭建WGAN生成手写数字
    OpenCV的介绍以及常用方法(Java)
    淘宝/天猫邻家好货 API 返回值说明
    多标签分类损失函数/精度 BCEWithLogitsLoss MultiLabelSoftMarginLoss BCELoss
    复杂逻辑的开发利器—Mendix快速实现AQL质量抽检
    k8s----集群优化
    Spring 项目快速整合 Hibernate
    win11 右键关闭显示更多选项 修改右键菜单
    企业架构LNMP学习笔记41
  • 原文地址:https://blog.csdn.net/qq_37131111/article/details/126588443