OpenCV - 概述



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

让我们从定义“计算机视觉”这个术语开始本章节。

计算机视觉

计算机视觉可以定义为一个学科,它解释了如何根据场景中存在的结构属性,从其二维图像重建、解释和理解三维场景。它处理使用计算机软件和硬件模拟和复制人类视觉。

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

  • **图像处理** - 它专注于图像处理。

  • **模式识别** - 它解释了各种分类模式的技术。

  • **摄影测量学** - 它关注从图像中获取精确测量。

计算机视觉与图像处理

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

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

计算机视觉的应用

这里列出了一些计算机视觉大量使用的主要领域。

机器人应用

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

  • 导航

  • 避障

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

  • 操控(例如 PUMA 机器人机械手)

  • 人机交互 (HRI) - 智能机器人与人互动并服务于人

医学应用

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

工业自动化应用

  • 工业检验(缺陷检测)
  • 组装
  • 条形码和包装标签读取
  • 物体分拣
  • 文档理解(例如 OCR)

安全应用

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

  • 监控 - 检测某些可疑活动或行为

交通应用

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

OpenCV 库的特性

使用 OpenCV 库,您可以:

  • 读取和写入图像

  • 捕捉和保存视频

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

  • 执行特征检测

  • 检测视频或图像中特定物体,例如人脸、眼睛、汽车。

  • 分析视频,即估计视频中的运动、减去背景以及跟踪视频中的物体。

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

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

OpenCV 库模块

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

核心功能

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

图像处理

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

视频

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

视频输入/输出

此模块解释了使用 OpenCV 库进行视频捕捉和视频编解码。在 OpenCV 的 Java 库中,此模块作为名为**org.opencv.videoio**的包包含。

calib3d

此模块包括关于基本多视图几何算法、单目和立体摄像机标定、物体姿态估计、立体匹配和三维重建元素的算法。在 OpenCV 的 Java 库中,此模块作为名为**org.opencv.calib3d**的包包含。

features2d

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

Objdetect

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

Highgui

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

OpenCV 的简史

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

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