Intellij IDEA中OpenCV环境配置及调试

一、OpenCV是什么?

OpenCV,Open Source Computer Vision Library,开源计算机视觉库。是主流计算机视觉开发工具平台之一,集成了2000多计算机视觉相关算法,支持深度学习模型的部署和推理。目前支持Java、JavaScript、Python、C++、C#等多种语言,同时支持Windows、Linux、macOS等操作系统。

实现环境

  • Windows 11
  • Intellij IDEA 2024.1.2
  • Jave version:Oracle OpenJDK 22.0.1
  • Apache Maven 3.9.7
  • OpenCV 4.10.0

配置过程

1.创建Java项目

2.项目结构

  1. lib/opencv:复制opencv中build/java目录中的所有文件至该路径。build目录包含编译、调试、发布所需要的各类动态库、静态库等。
  2. src/main/java:主目录。

3.添加OpenCV库

File→Project Structure…→Platform Settings→Global Libraries(OpenCV的相关JAR包根据自身环境进行编辑)

4.设置VM Option

VM Option的路径指向项目中lib/opencv/x64的路径位置,此处我使用的是绝对路径形式。

5.创建测试类:ReadImgTest

该类和Main主程序在同一名字空间。代码如下:

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;

public class ReadImgTest {
    static {
        // 加载本地链接库
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        System.out.println("Welcome to OpenCV " + Core.VERSION);
    }
    public static void test() {
        // 读取一张图片        
        Mat src = Imgcodecs.imread("C:\\Users\\Pictures\\tmp\\test.png",1);

        /**
         * 读取图片的两种方式:
         * 1. Imgcodecs.imread(String filename, int flags)
         * 2. Highgui.imread(String filename, int flags)
         * 其中,flags表示读取图片的模式,0表示读取为灰度图,1表示读取为彩色图。
         * HighGui:该模块是HighGUI图形用户界面模块,包含输入输出、视频捕获、图像及视频的编码解码、图形界面交互接口(按键/鼠标点击/滚轮动作等)等内容。
         */
        
        // 显示图片
        HighGui.imshow("test", src);
        
        HighGui.waitKey(3000);
    }
}

HighGui:该模块是HighGUI图形用户界面模块,包含输入输出、视频捕获、图像及视频的编码解码、图形界面交互接口(按键/鼠标点击/滚轮动作等)等内容。

6.测试

编辑Main主程序,调用测试类,代码如下:

public class Main {

    public static void main(String[] args) {
        
        ReadImgTest.test();

    }
}

运行调试结果如下:


总结

  • 安装OpenCV
  • 创建Java项目,选择正确的SDK。
  • 配置项目设置
    • 进入 File → Project Structure →Plateform Settings→Global Libraries进行配置。
  • 添加OpenCV依赖库
    • 将OpenCV的jar文件添加至Global Libraries.
    • 在运行配置中添加VM选项,指定native库路径。
  • 修改编译器设置。添加OpenCV包含的头文件路径。
  • 编写测试代码。使用CV::Mat读取图像。
  • 运行测试。检查OpenCV功能是否可以正常工作。
  • 调试及优化。如遇问题可以使用调试功能进行断点调试。

后记及问题补充

1、如果你的项目无法正确引入opencv的相关资源包,可以在Modules中引入Global Libraries,如图所示:

2、如果运行时出现类似:Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java4100 in java.library.path: C:\Program……的错误提示。

出现这个问题的原因是java应用需要用到opencv本地类库下的.DLL文件。一般来说,java运行时加载本地libraries时,需要从PTAH环境变量中,或者根据java.library.path.system.property指定位置加载(取决于Java程序使用的时System.load()还是java.lang.System.loadLibrary())。任何一个原因没能找到,都会出现类似的报错异常。可以使用以下Java语句进行查询:

public class Main {
    public static void main(String[] args) {

        // 获取系统环境变量 java.library.path的值,该属性指定了系统库的搜索路径。
        // 获取系统环境变量 java.library.path
        String libraryPath = System.getProperty("java.library.path");
        // 输出java.library.path的值,用于查看当前系统的库搜索路径。
        System.out.println("java.library.path:" + libraryPath);
    }
}

 如果检查确认有相关的信息,说明VM配置正确

那么,可以设置Windows环境变量解决。在Windows环境变量中添加DLL路径,如图:

完成以上配置后,问题解决。

  • 13
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值