Open CV 在windows环境初始化和 Java 动态库加载方式介绍
目录
前言
OpenCV(Open Source Computer Vision Library)
是一个开源的计算机视觉和机器学习软件库,它提供了一系列的工具和程序库,让用户能够进行复杂的图像处理和计算机视觉任务。以下是一些 OpenCV 常用的功能:
- 图像读取和保存:读取和保存图像文件,支持多种图像格式。
- 图像处理:包括图像缩放、旋转、裁剪、变换、滤波、边缘检测等。
- 图像增强:亮度调整、对比度调整、直方图均衡化、颜色调整等。
- 特征检测和描述:例如检测图像中的角点、边缘、特定特征等,提取关键点的描述子。
- 物体检测和识别:包括人脸检测、目标检测、图像分类等。
- 目标跟踪:跟踪视频中的目标对象的运动。
- 视频处理:包括视频读取、保存、剪辑、转码等功能。
- 光流估计:计算图像中像素的运动信息。
- 三维重建:从多个图像中重建三维场景。
- 摄像头和实时视频处理:从摄像头读取实时视频流,进行实时图像处理。
- 机器学习支持:提供了一些机器学习算法的实现,例如支持向量机、随机森林等。
- CUDA 加速:使用 NVIDIA 的 CUDA 技术加速图像处理和计算。
这些只是 OpenCV 提供的一些基本功能,还有更多功能和算法可以在 OpenCV 中使用。
OpenCV在深度学习中重要地位的几个方面:
数据预处理: OpenCV提供了丰富的功能来处理图像数据,这是深度学习模型训练前的重要步骤。它可以用于图像的缩放、归一化、颜色空间转换、几何变换(如旋转和剪裁)等,这些操作有助于创建一个具有更好泛化能力的模型。
实时性能: OpenCV针对实时应用进行了优化,它能够快速执行图像处理操作,这对于需要实时反馈的深度学习应用,如机器人导航、自动驾驶车辆和视频监控系统等尤为重要。
功能性集成: OpenCV自身包含了一些深度学习模型和算法,如人脸检测、对象识别和追踪等,可以直接集成应用,也能与其他深度学习框架如TensorFlow和PyTorch配合使用。
跨平台性和多语言支持: OpenCV支持多种编程语言(如C++、Python和Java)并且可以在多个操作系统上运行,这使得它非常灵活,易于集成到各种应用中。
社区和资源: OpenCV拥有一个活跃的社区和大量的教程、文档和例程,有助于初学者学习和专业开发者交流经验。
视觉特征提取: 在深度学习之前,OpenCV的特征检测(如SIFT、SURF)、特征匹配和图像描述符在对象识别等计算机视觉任务中起着关键作用。即便是在深度学习盛行的今天,这些技术也仍然用于辅助训练和结果解释。
模型部署: OpenCV可以用来部署和运行已训练好的深度学习模型,它支持多种模型格式,使其能够在多种不同的设备上执行深度学习推理。
辅助研究和创新: OpenCV经常被用于原型设计和研究验证,它为研究人员提供了快速试验和验证新想法的工具,从而推动了计算机视觉和深度学习领域的进步。
总而言之,OpenCV在深度学习中的重要地位不仅体现在其强大的图像处理能力,还包括其对深度学习模型训练、部署和实时应用的支持,以及其庞大的用户社区和资源库。它是连接传统计算机视觉技术与现代深度学习技术的桥梁,对于促进视觉相关AI技术的研究和商业应用都具有重要价值。
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.jar
pause
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
在Java中使用OpenCV涉及到环境初始化和动态库加载。
以下是一些基本步骤和方法来设置OpenCV环境并在Java中加载相关的动态库。
这里我们简单介绍,实际使用自主选择
方式一: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环境配置后就可以愉快的使用了