在Java中使用OpenCV实践

 更新时间:2025年07月25日 14:28:43   作者:ZYH_Victor  
用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探索AI结合应用

前言

最近工作上有个项目,涉及到一些有关图像的操作,正好得知有OpenCV这一个开源库。

在网上查找了一些资料,发现OpenCV有很多妙用,例如人脸识别、车牌识别等,甚至有大佬能用它来做自动驾驶。感觉挺有意思的,小记一下。

一 、OpenCV

1.简介

OpenCV (开源计算机视觉库) 是一个开源的BSD许可库,其中包含数百种计算机视觉算法。它为开发者提供了Java、C++和Python接口,支持Windows、Linux和Android。

OpenCV被广泛应用于各种领域,例如安防监控、智能驾驶、机器人视觉、虚拟现实等。

官网文档地址:OpenCV: OpenCV Tutorials

参考教程:OpenCV官方文档_w3cschool

2.下载与安装

下载地址:Releases - OpenCV

根据自己需要,选择版本以及对应的平台,这里版本选4.10.0,平台选Windows。

下载后是一个exe,双击安装即可。

                

3.目录说明

安装完成后的目录如下:

build为构建后的文件,sources是OpenCV的源代码,我们进入build:

因为我们是java开发,所以进入java文件夹,其中有个opencv-4100.jar,这个是我们开发中需要用到的jar包。

x64与x86代表不同的系统,我们是在x64系统中使用,所以选择x64,打开文件夹后里面有一个dll文件,这也是我们开发中需要调用的库文件。

二、在Java项目中使用

我使用的开发软件是 IntelliJ IDEA,因此这里将展示在IDEA中集成OpenCV。

1.打开或新建一个项目

2.使用快捷键 Shift + Ctrl + Alt + S 打开项目设置,或鼠标右击项目,选择 “打开项目设置”

3.选择 “模块” → 选中项目 → “依赖” → “+(添加)” → “1.JAR或目录...” → 找到下载的OpenCV-4100.jar → "确定"

4.找到刚刚添加进来的jar包,"右建" → "编辑" → "+(添加)" → 找到下载的opencv_java4100.dll → "确定"

以上步骤完成后,就可以开始编码了。

需要注意的是,如果maven依赖有变更,OpenCV需要重新导入,目前我还没发现解决方法,若有大佬能解决这个问题,恳请告知,小弟不胜感激!

三 、测试

1.测试代码

这里运行一个生成灰度图的测试代码,测试是否成功导入OpenCV。

package org.example;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class OpenCV_test {
    public static void main(String[] args) {
        //加载 opencv_javaXX.dll
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        //测试图片地址
        String imgPath = "path/path/xxxx.jpg";
        //读取图片
        Mat img = Imgcodecs.imread(imgPath);
        //生成灰度图
        Mat gray = new Mat();
        Imgproc.cvtColor(img,gray, Imgproc.COLOR_BGR2GRAY);
        //保存图片
        Imgcodecs.imwrite("./result.png", gray);
    }
}

2.测试结果

灰度图

原图

总结

至此,Java项目已成功导入OpenCV,听说OpenCV还能结合AI模型一起使用,应该挺好玩的,后面有时间的话我也会去研究研究,玩一玩。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringCloud FeignClient 超时设置

    SpringCloud FeignClient 超时设置

    FeignClient 默认的超时时间可能不满足你的需求,你可以通过几种方式来自定义这些超时设置,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • Springcloud+Mybatis使用多数据源的四种方式(小结)

    Springcloud+Mybatis使用多数据源的四种方式(小结)

    这篇文章主要介绍了Springcloud+Mybatis使用多数据源的四种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Spring6整合JUnit的详细步骤

    Spring6整合JUnit的详细步骤

    这篇文章主要介绍了Spring6整合JUnit的详细步骤,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • springboot依靠security实现digest认证的实践

    springboot依靠security实现digest认证的实践

    HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因实现复杂且不支持Remember-me,未被广泛采用,测试案例显示其工作流程
    2025-09-09
  • java连接数据库知识点总结以及操作应用

    java连接数据库知识点总结以及操作应用

    这篇文章主要给大家介绍了关于java连接数据库知识点总结以及操作应用的相关资料, 当涉及到Java中数据库数据处理时,我们可以利用强大的Java数据库连接技术与各种数据库进行交互,需要的朋友可以参考下
    2023-12-12
  • springboot docker jenkins 自动化部署并上传镜像的步骤详解

    springboot docker jenkins 自动化部署并上传镜像的步骤详解

    这篇文章主要介绍了springboot docker jenkins 自动化部署并上传镜像的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05
  • mac安装配置jdk环境变量

    mac安装配置jdk环境变量

    这篇文章主要为大家介绍了mac安装配置jdk环境变量实现过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • 一文详解Java如何系统地避免空指针问题

    一文详解Java如何系统地避免空指针问题

    新手Java开发总是经常空指针检查,甚至某些老手也会犯这样的问题,所以这篇文章小编就带大家一起来看看如何系统地避免空指针问题,希望对大家有所帮助
    2024-01-01
  • Springboot整合mybatis的步骤

    Springboot整合mybatis的步骤

    这篇文章主要介绍了Springboot整合mybatis的步骤,帮助大家更好的理解和学习使用
    2021-04-04
  • Java编写日志手机号脱敏工具类

    Java编写日志手机号脱敏工具类

    在开发过程中,很容易将用户敏感信息,例如手机号码、身份证等,打印在日志平台,本文将利用Java编写一个日志手机号脱敏工具类,感兴趣的可以了解下
    2024-12-12

最新评论