- OpenCV 教程
- OpenCV - 主页
- OpenCV - 概述
- OpenCV - 环境
- OpenCV - 存储图像
- OpenCV - 读取图像
- OpenCV - 写入图像
- OpenCV-图形用户界面
- 绘图功能
- OpenCV - 画一个圆
- OpenCV - 画一条线
- OpenCV - 绘制矩形
- OpenCV - 绘制椭圆
- OpenCV - 绘制折线
- OpenCV - 绘制凸折线
- OpenCV - 绘制箭头线
- OpenCV - 添加文本
- 过滤
- OpenCV - 双边滤波器
- OpenCV - 盒式过滤器
- OpenCV - SQRBox 滤波器
- OpenCV - Filter2D
- OpenCV - 膨胀
- OpenCV - 侵蚀
- OpenCV - 形态运算
- OpenCV - 图像Pyramid
- 摄像头和人脸检测
- OpenCV - 使用相机
- OpenCV - 图片中的人脸检测
- 使用相机进行人脸检测
- OpenCV 有用资源
- OpenCV - 快速指南
- OpenCV - 有用的资源
- OpenCV - 讨论
OpenCV - 概述
OpenCV 是一个跨平台库,我们可以使用它来开发实时计算机视觉应用程序。它主要专注于图像处理、视频捕获和分析,包括人脸检测和物体检测等功能。
让我们从定义术语“计算机视觉”开始本章。
计算机视觉
计算机视觉可以定义为一门学科,它解释如何根据场景中存在的结构的属性从 2D 图像重建、中断和理解 3D 场景。它涉及使用计算机软件和硬件建模和复制人类视觉。
计算机视觉与以下领域有显着重叠 -
图像处理- 它专注于图像处理。
模式识别- 它解释了对模式进行分类的各种技术。
摄影测量- 它涉及从图像中获得准确的测量结果。
计算机视觉与图像处理
图像处理涉及图像到图像的转换。图像处理的输入和输出都是图像。
计算机视觉是根据物理对象的图像对物理对象进行明确、有意义的描述。计算机视觉的输出是 3D 场景中结构的描述或解释。
计算机视觉的应用
在这里,我们列出了计算机视觉大量使用的一些主要领域。
机器人应用
定位 - 自动确定机器人位置
导航
避障
组装(钉孔、焊接、喷漆)
操纵(例如PUMA机器人操纵器)
人机交互 (HRI) - 与人类交互和服务的智能机器人
医药应用
- 分类和检测(例如病变或细胞分类和肿瘤检测)
- 2D/3D 分割
- 3D人体器官重建(MRI或超声波)
- 视觉引导机器人手术
工业自动化应用
- 工业检验(缺陷检测)
- 集会
- 条形码和包装标签读取
- 对象排序
- 文档理解(例如 OCR)
安全应用
生物识别(虹膜、指纹、人脸识别)
监视 - 检测某些可疑活动或Behave
交通应用
- 自动驾驶汽车
- 安全,例如驾驶员警惕性监控
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 的包包含在内。
视频输入/输出
本模块介绍了使用 OpenCV 库的视频捕获和视频编解码器。在 OpenCV 的 Java 库中,该模块作为一个名为org.opencv.videoio 的包包含在内。
校准3d
该模块包括有关基本多视图几何算法、单立体相机校准、物体姿态估计、立体对应和 3D 重建元素的算法。在 OpenCV 的 Java 库中,该模块作为一个名为org.opencv.calib3d 的包包含在内。
二维特征
该模块包括特征检测和描述的概念。在 OpenCV 的 Java 库中,该模块作为一个名为org.opencv.features2d 的包包含在内。
对象检测
该模块包括对预定义类的对象和实例的检测,例如面部、眼睛、杯子、人、汽车等。在 OpenCV 的 Java 库中,该模块作为名为 org.opencv.objdetect 的包包含在内。
高级图形界面
这是一个易于使用的界面,具有简单的 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 收购。