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

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环境配置后就可以愉快的使用了

Open CV 专栏导航

  • 35
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
以下是使用OpenCV获取Kinect深度图像的步骤: 1. 安装OpenCV和Kinect SDK:首先需要安装OpenCV和Kinect SDK。在Windows上,可以从官方网站下载OpenCV和Kinect SDK并按照说明进行安装。 2. 初始化Kinect:使用Kinect SDK中的函数初始化Kinect。这将包括打开Kinect设备和启动深度传感器。 3. 获取深度数据:使用Kinect SDK中的函数获取深度数据。这将返回一个二维数组,其中每个元素表示深度传感器在该位置测量到的深度值。 4. 将深度数据转换为OpenCV图像格式:将深度数据转换为OpenCV图像格式,可以使用OpenCV中的函数cv::Mat::create()和cv::Mat::data()。 5. 可视化深度图像:使用OpenCV中的函数cv::imshow()和cv::waitKey()来可视化深度图像。 以下是一个示例代码: ``` #include <opencv2/opencv.hpp> #include <Windows.h> #include <Kinect.h> int main() { // Initialize Kinect IKinectSensor* pSensor; HRESULT hr = GetDefaultKinectSensor(&pSensor); if (FAILED(hr)) return -1; hr = pSensor->Open(); if (FAILED(hr)) return -1; IDepthFrameSource* pDepthSource; hr = pSensor->get_DepthFrameSource(&pDepthSource); if (FAILED(hr)) return -1; IDepthFrameReader* pDepthReader; hr = pDepthSource->OpenReader(&pDepthReader); if (FAILED(hr)) return -1; // Get depth data const int depthWidth = 512; const int depthHeight = 424; UINT16 depthData[depthWidth * depthHeight]; cv::Mat depthImage(depthHeight, depthWidth, CV_16U); while (true) { IDepthFrame* pDepthFrame = nullptr; HRESULT hr = pDepthReader->AcquireLatestFrame(&pDepthFrame); if (SUCCEEDED(hr)) { hr = pDepthFrame->CopyFrameDataToArray(depthWidth * depthHeight, depthData); if (SUCCEEDED(hr)) { depthImage.data = (uchar*)depthData; cv::imshow("Depth Image", depthImage); cv::waitKey(1); } SafeRelease(pDepthFrame); } } // Release resources SafeRelease(pDepthReader); SafeRelease(pDepthSource); pSensor->Close(); SafeRelease(pSensor); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

無间行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值