it编程 > 编程语言 > Java

在Java中使用OpenCV实践

6人参与 2025-07-25 Java

前言

最近工作上有个项目,涉及到一些有关图像的操作,正好得知有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模型一起使用,应该挺好玩的,后面有时间的话我也会去研究研究,玩一玩。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

您想发表意见!!点此发布评论

推荐阅读

OpenCV在Java中的完整集成指南分享

07-25

Spring Boot Actuator应用监控与管理的详细步骤

07-25

Java获取当前时间String类型和Date类型方式

07-25

Mybatis四种分页方式小结

07-25

springboot 基于quartz 实现的单机可管理的调度任务(最新推荐)

07-25

SpringBoot+MyBatis Plus实现update_time字段自动更新详解

07-25

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论