在Java中使用OpenCV实践

2025-07-25 20:50
文章标签 java 使用 实践 opencv

本文主要是介绍在Java中使用OpenCV实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探...

前言

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

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

一 、OpenCV

1.简介

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

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

官网文档地址:OpenCV: OpenCV Tutorials

参考教程:OpenCV官方文档_w3cschool

2.下载与安装

下载地址:Releases - OpenCV

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

在Java中使用OpenCV实践

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

  &编程nbsp;             在Java中使用OpenCV实践

3.目录说明

安装完成后的目录如下:

在Java中使用OpenCV实践

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

在Java中使用OpenCV实践

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

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

在Java中使用OpenCV实践

在Java中使用OpenCV实践

二、在Java项目中使用

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

1.打开或新建一个项目

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

在Java中使用OpenCV实践

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

在Java中使用OpenCV实践

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

在Java中使用OpenCV实践

在Java中使用OpenCV实践

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

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

三 、测试

1.测试代javascript

这里运行一个生成灰度图的测试代码,测试是否成功导入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实践

灰度图

在Java中使用OpenCV实践

原图

总结

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持China编程(www.chinasem.cn)。

这篇关于在Java中使用OpenCV实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155479

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动