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

该模块包括有关基本多视图几何算法,单个和立体摄像机标定,对象姿态估计,立体对应和三维重建元素的算法。 在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采用。

上一篇:没有了

下一篇:OpenCV开发环境配置

关注微信小程序
程序员编程王-随时随地学编程

扫描二维码
程序员编程王

扫一扫关注最新编程教程