OpenCV - 概述

OpenCV 是一个跨平台库,我们可以使用它来开发实时计算机视觉应用程序。它主要侧重于图像处理、视频捕获和分析,包括人脸检测和物体检测等功能。

让我们从定义术语"计算机视觉"开始本章。

计算机视觉

计算机视觉可以定义为一门学科,它解释了如何根据场景中存在的结构的属性,从 2D 图像中重建、中断和理解 3D 场景。它涉及使用计算机软件和硬件对人类视觉进行建模和复制。

计算机视觉与以下领域有很大重叠 −

  • 图像处理 −它专注于图像处理。

  • 模式识别 − 它解释了对模式进行分类的各种技术。

  • 摄影测量 − 它涉及从图像中获取精确的测量值。

计算机视觉与图像处理

图像处理处理图像到图像的转换。图像处理的输入和输出都是图像。

计算机视觉是从图像中构建物理对象的明确、有意义的描述。计算机视觉的输出是对 3D 场景中结构的描述或解释。

计算机视觉的应用

这里我们列出了计算机视觉被广泛使用的一些主要领域。

机器人应用

  • 定位 − 自动确定机器人位置

  • 导航

  • 避障

  • 装配(销孔、焊接、喷漆)

  • 操作(例如 PUMA 机器人操作器)

  • 人机交互 (HRI) −智能机器人与人互动和服务

医学应用

  • 分类和检测(例如病变或细胞分类和肿瘤检测)
  • 2D/3D分割
  • 3D器官重建(MRI或超声波)
  • 视觉引导机器人手术

工业自动化应用

  • 工业检测(缺陷检测)
  • 装配
  • 条形码和包装标签读取
  • 对象分类
  • 文档理解(例如 OCR)

安全应用

  • 生物识别(虹膜、指纹、人脸识别)

  • 监视 −检测某些可疑活动或行为

交通运输应用

  • 自动驾驶汽车
  • 安全,例如驾驶员警觉监控

OpenCV 库的功能

使用 OpenCV 库,您可以−

  • 读取和写入图像

  • 捕获和保存视频

  • 处理图像(过滤、变换)

  • 执行特征检测

  • 检测视频或图像中的特定对象,例如面部、眼睛、汽车。

  • 分析视频,即估计其中的运动,减去背景并跟踪其中的对象它。

OpenCV 最初是用 C++ 开发的。此外,还提供了 Python 和 Java 绑定。OpenCV 可在各种操作系统上运行,例如 Windows、Linux、OSx、FreeBSD、Net BSD、Open BSD 等。

本教程通过使用 Java 绑定的示例解释了 OpenCV 的概念。

OpenCV 库模块

以下是 OpenCV 库的主要库模块。​​

核心功能

此模块涵盖用于构建 OpenCV 应用程序的基本数据结构,例如标量、点、范围等。除此之外,它还包括用于存储图像的多维数组 Mat。在 OpenCV 的 Java 库中,此模块作为一个名为 org.opencv.core 的包包含在内。

图像处理

此模块涵盖各种图像处理操作,例如图像过滤、几何图像变换、颜色空间转换、直方图等。在 OpenCV 的 Java 库中,此模块作为一个名为 org.opencv.imgproc 的包包含在内。

视频

此模块涵盖视频分析概念,例如运动估计、背景减法和对象跟踪。在 OpenCV 的 Java 库中,此模块作为一个名为 org.opencv.video 的包包含在内。

视频 I/O

此模块使用 OpenCV 库解释视频捕获和视频编解码器。在 OpenCV 的 Java 库中,此模块作为名为 org.opencv.videoio 的包包含在内。

calib3d

此模块包括有关基本多视图几何算法、单相机和立体相机校准、对象姿态估计、立体对应和 3D 重建元素的算法。在 OpenCV 的 Java 库中,此模块作为名为 org.opencv.calib3d 的包包含在内。

features2d

此模块包括特征检测和描述的概念。在 OpenCV 的 Java 库中,此模块包含在名为 org.opencv.features2d 的包中。

Objdetect

此模块包括对预定义类(如面部、眼睛、杯子、人、汽车等)的对象和实例的检测。在 OpenCV 的 Java 库中,此模块包含在名为 org.opencv.objdetect 的包中。

Highgui

这是一个易于使用的界面,具有简单的 UI 功能。在 OpenCV 的 Java 库中,此模块的功能包含在两个不同的包中,即 org.opencv.imgcodecsorg.opencv.videoio

OpenCV 简史

OpenCV 最初是英特尔的一项研究计划,旨在为 CPU 密集型应用程序提供建议。它于1999年正式推出。

  • 2006年,它的第一个主要版本OpenCV 1.0发布。
  • 2009年10月,第二个主要版本OpenCV 2发布。
  • 2012年8月,OpenCV被非营利组织OpenCV.org接管。