Open CV 图像处理基础:(一)Open CV 在windows环境初始化和 Java 动态库加载方式介绍

Open CV 在windows环境初始化和 Java 动态库加载方式介绍

目录

  • Open CV 在windows环境初始化和 Java 动态库加载方式介绍
    • OpenCV安装
      • opencv-4.4.0下载
      • 安装
    • 加载`opencv-4.4.0.jar`包
      • jar包引入
      • mavn-init.cmd
      • jar包装载到本地maven仓库
      • pom.xml
      • 加载动态库
    • 加载动态库`opencv_java440.dll`:
      • 方式一:System.loadLibrary
      • 方式二:System.load
    • 验证加载:
    • Open CV 专栏导航

Open CV是一个开源的计算机视觉和机器学习软件库,它提供了一系列的工具和程序库,让用户能够进行复杂的图像处理和计算机视觉任务。在Java中使用OpenCV涉及到环境初始化和动态库加载。以下是一些基本步骤和方法来设置OpenCV环境并在Java中加载相关的动态库。

OpenCV安装

官网
https://opencv.org/releases/page/2/

opencv-4.4.0下载

https://nchc.dl.sourceforge.net/project/opencvlibrary/4.4.0/opencv-4.4.0-vc14_vc15.exe

安装

双击安装选择安装目录等待安装完毕,jar包就在以下目录
D:\Program Files\opencv4.4\opencv\build\java

加载opencv-4.4.0.jar

jar包引入

将OpenCV jar(例如 opencv-xxx.jar)添加到项目的类路径中。
如果你使用的是构建系统(如Maven或Gradle),需要确保适当的依赖项已经配置在你的构建文件中。
在这里插入图片描述

jar包资源目录我改了名称opencv-4.4.0.jar
在这里插入图片描述

mavn-init.cmd

mavn-init.cmd是一个批处理脚本,可以把jar包装载到本地maven仓库

@echo off
chcp 65001
echo ****************************************
echo 安装SDK依赖包到本地maven仓库
echo ****************************************call mvn install:install-file -DgroupId=org -DartifactId=opencv  -Dversion=4.4.0 -Dpackaging=jar -Dfile=opencv-4.4.0.jarpause

jar包装载到本地maven仓库

在这里插入图片描述

pom.xml

maven引入本地仓库的opencv-4.4.0.jar

    <dependencies><dependency><groupId>org</groupId><artifactId>opencv</artifactId><scope>compile</scope><version>4.4.0</version></dependency></dependencies>

加载动态库

在这里插入图片描述

加载动态库opencv_java440.dll

关于动态库加载的讲解可以看我的另一篇文章
Java中加载本地库的方法:System.load与System.loadLibrary

这里我们简单介绍,实际使用自主选择

方式一:System.loadLibrary

添加OpenCV_DIR环境变量,指向OpenCV的安装目录或构建目录中的某个文件夹,通常是build/java或build/bin。
将OpenCV的bin目录(其中包含DLL文件)添加到系统的PATH环境变量中,以便系统可以找到OpenCV的动态链接库。

在Java中加载OpenCV的动态库通常涉及到System.loadLibrary方法。以下是加载OpenCV动态库的步骤:

public class ImageBlur {static {// 加载 OpenCV 的本地库System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}
}

方式二:System.load

调用System.loadLibrary(Core.NATIVE_LIBRARY_NAME)来加载OpenCV的动态库。Core.NATIVE_LIBRARY_NAME会解析为在当前平台上对应的动态库名称,例如,在Windows上通常是opencv_javaxxx,其中xxx是库的版本号。
java

public class ImageBlur {static {// 加载 OpenCV 的本地库System.load("D:/WORK/WORK_PLUS/aiface-plus-dev/runner/target/classes/dll/x64/opencv_java440.dll");}
}

验证加载:

为了验证OpenCV库是否正确加载,你可以尝试调用一些基础的OpenCV函数,如创建一个简单的矩阵,并打印它来确保一切正常。

public static void main(String[] args) {Mat mat = Mat.eye(3, 3, CvType.CV_8UC1);System.out.println("mat = " + mat.dump());
}

在使用IDE(如IntelliJ IDEA或Eclipse)时,通常有助于使用IDE的工具和功能来简化库的添加和管理过程。

以上步骤和方法为在Java环境中初始化OpenCV及加载其动态库提供了基本的指南,具体细节可能根据OpenCV的不同版本、操作系统或项目配置而有所不同。

以上完成基本的opencv环境配置后就可以愉快的使用了

Open CV 专栏导航

  • (一)Open CV 在windows环境初始化和 Java 动态库加载方式介绍
  • (二)Open CV 从基本概念到实践操作
  • (三)使用 Open CV 在 Java 中进行基本的图片缩放操作
  • (四)使用 Open CV 在 Java 中进行基本的图片模糊处理
  • (五)Java 使用 Open CV 的绘图函数
  • (六)在Java中使用 Open CV进行图片翻转和图片旋转

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/615415.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Python实现身份证信息识别

目录 前言身份证信息识别的背景与意义自动识别身份证的需求 实现环境与工具准备Python编程语言OpenCV图像处理库Tesseract OCR引擎 身份证信息识别算法原理图像预处理步骤(图像裁剪、灰度化 、二值化、去噪)信息提取与解析 Python代码实现通过OCR提取身份证号码代码解析身份证信…

AI分割迁移绘画-neural-style

&#x1f3e1; 个人主页&#xff1a;IT贫道-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;私聊博主加WX好友&#xff0c;获取更多资料哦~ &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. 二值化展示图像代码…

docker、docker-compose 离线安装、shell脚本一键安装、卸载

注&#xff1a;二进制包&#xff0c;与脚本在同级目录 docker 离线安装&#xff1a; 包下载&#xff1a;https://download.docker.com/linux/static/stable/x86_64/ docker_install.sh&#xff1a; #!/bin/bash# 指定 Docker 版本和文件名 DOCKER_VERSION"24.0.7" D…

pyenv环境找不到sqlite:No module named _sqlite3

前言 一般遇到这个问题都在python版本管理或者虚拟环境切换中遇到&#xff0c;主要有两个办法解决&#xff0c;如下&#xff1a; 解决方法1 如果使用的pyenv管理python环境时遇到没有_sqlite3 库&#xff0c;可以将当前pyenv的python环境卸载 pyenv uninstall xxx然后在系统…

电位器

一、电位器简介 电位器是一种可调的电子元件。它是由一个电阻体和一个转动或滑动系统组成。当电阻体的两个固定触电之间外加一个电压时&#xff0c;通过转动或滑动系统改变触点在电阻体上的位置&#xff0c;在动触点与固定触点之间便可得到一个与动触点位置成一定关系的电压。…

nbcio-boot项目的文件上传与回显处理方法

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/n…

如何将Redis、Zookeeper、Nacos配置为Windows系统的一个服务

说明&#xff1a;当我们在Windows上开发时&#xff0c;不可避免的会用到一些中间件&#xff0c;如Redis、Zookeeper、Nacos等等&#xff0c;当在项目中使用到本地的这些服务器时&#xff0c;我们需要把本地的服务器启动&#xff0c;会开启下面这样的一个窗口。 Redis服务器&am…

【ARM 嵌入式 编译系列 3.5 -- gcc 链接参数介绍】

文章目录 gcc 链接参数介绍 gcc 链接参数介绍 上篇文章【ARM 嵌入式 编译系列 3.4 – 查看所依赖库文件的路径 详细介绍】一直在提链接参数&#xff0c;那么链接参数有哪些&#xff0c;它们又有什么作用呢&#xff1f; 如前一篇文章中的的链接参数到底是什么意思呢&#xff1…

uniapp中uview组件库丰富的CountTo 数字滚动使用方法

目录 #平台差异说明 #基本使用 #设置滚动相关参数 #是否显示小数位 #千分位分隔符 #滚动执行的时机 #API #Props #Methods #Event 该组件一般用于需要滚动数字到某一个值的场景&#xff0c;目标要求是一个递增的值。 注意 如果给组件的父元素设置text-align: cente…

C++力扣题目112,113--路径总和,路径总和II

112路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 叶子节点 是…

以太网交换机——稳定安全,构筑数据之桥

交换机&#xff0c;起源于集线器和网桥等网络通信设备&#xff0c;它在性能和功能上有了很大的发展&#xff0c;因此逐渐成为搭建网络环境的常用的设备。 随着ChatGPT爆发&#xff0c;因为用户量激增而宕机事件频频发生&#xff0c;云计算应用催生超大规模算力需求&#xff0c;…

java通过okhttp方式实现https请求的工具类(绕过证书验证)

目录 一、引入依赖包二、okhttp方式实现的https请求工具类2.1、跳过证书配置类2.2、okhttp方式的 https工具类 三、测试类 一、引入依赖包 引入相关依赖包 <!--okhttp依赖包--> <dependency><groupId>com.squareup.okhttp3</groupId><artifactId>…

常用的 Python 开发工具以及它们的优势

对于 Python 编程新手来说&#xff0c;选择合适的开发工具是一个关键的步骤。以下是一些常用的 Python 开发工具以及它们的优势&#xff1a; 1. 开发环境 (IDEs): ■ PyCharm: ◆ 优势&#xff1a;提供了强大的代码编辑、调试、代码分析等功能。对于 Django、Flask 和其他 Pyth…

vite和vue启用gzip

Nginx 配置 server {listen 8230;server_name 8230;charset utf-8;gzip on;gzip_buffers 32 4K;gzip_comp_level 6;gzip_min_length 1k;gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/x…

力扣(leetcode)第541题反转字符串II(Python)

541.反转字符串II 题目链接&#xff1a;541.反转字符串II 给定一个字符串 s 和一个整数 k&#xff0c;从字符串开头算起&#xff0c;每计数至 2k 个字符&#xff0c;就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个&#xff0c;则将剩余字符全部反转。 如果剩余字…

Vue、uniApp、微信小程序、Html5等实现数缓存

此文章带你实现前端缓存&#xff0c;利用时间戳封装一个类似于Redis可以添加过期时间的缓存工具 不仅可以实现对缓存数据设置过期时间&#xff0c;还可以自定义是否需要对缓存数据进行加密处理 工具介绍说明 对缓存数据进行非对称加密处理 对必要数据进行缓存&#xff0c;并…

php通用后台开发框架源码

php通用后台开发框架源码 基于ThinkPHPBootstrap的快速后台开发框架。 基于Auth验证的权限管理系统&#xff0c;支持无限级父子级权限继承&#xff0c;父级的管理员可任意 增删改子级管理员及权限设置&#xff0c;支持单管理员多角色&#xff0c;支持管理子级数据或个人数据。 …

探讨回溯算法的秘密(Java实现)

深入探讨回溯算法及Java实现 介绍&#xff1a; 回溯算法是一种经典的递归算法&#xff0c;用于解决在给定约束条件下的搜索问题。它通过尝试所有可能的解决方案&#xff0c;并在不满足约束条件的情况下回溯到上一步&#xff0c;继续尝试其他可能的解决方案。在本文中&#xff…

Linux学习记录——삼십구 数据链路层协议

文章目录 1、了解数据链路层2、认识以太网3、认识MAC地址4、以太网报文5、局域网通信原理1、基本原理2、数据碰撞3、交换机4、ARP协议5、RARP协议6、局域网中间人 6、DNS&#xff08;简单介绍&#xff09;7、ICMP协议1、报文2、traceroute命令 7、NAT技术1、基本过程2、NAPT3、…

GO项目自动化-根据库表字段自动生成API

根据库表字段自动生成API 一个项目开发离不开数据库的增删改查&#xff0c;API功能也基本围绕着表的CRUD&#xff1a;增加(Create)、读取(Read)、更新(Update)和删除(Delete)。每个表写一个CRUD&#xff0c;方法都差不多&#xff0c;逻辑也非常相似。 那么有没有可能根据表结构…