OpenCV学习笔记(一)扫盲三连

OpenCV是什么?

1999 年,Gary Bradski(加里·布拉德斯基)当时在英特尔任职,怀着通过为计算机视觉和人工智能的从业者提供稳定的基础架构并以此来推动产业发展的美好愿景,他启动了 OpenCV 项目。

OpenCV 库用C语言和 C++ 语言编写,可以在 Windows、Linux、Mac OS X 等系统运行。同时也在积极开发 Python、Java、Matlab 以及其他一些语言的接口,将库导入安卓和 iOS 中为移动设备开发应用。

OpenCV 自项目成立以来获得了来自英特尔和谷歌的大力支持,尤其需要感谢 Itseez,该公司完成了早期开发的大部分工作。此后,Arraiy 团队加入该项目并负责维护始终开源和免费的 OpenCV.org。
Itseez 是俄罗斯的一家视觉公司,专门从事计算机视觉算法。2016 年 5 月,英特尔收购该公司,以“帮助英特尔的用户打造创新型深度学习的 CV 应用,如果自动驾驶、数字安全监控和工业检测”(英特尔物联网总经理 Doug Dacies 如此说)。
OpenCV 设计用于进行高效的计算,十分强调实时应用的开发。它由 C++ 语言编写并进行了深度优化,从而可以享受多线程处理的优势。

OpenCV 的一个目标是提供易于使用的计算机视觉接口,从而帮助人们快速建立精巧的视觉应用。

OpenCV 库包含从计算机视觉各个领域衍生出来的 500 多个函数,包括工业产品质量检验、医学图像处理、安保领域、交互操作、相机校正、双目视觉以及机器人学。

因为计算机视觉和机器学习经常在一起使用,所以 OpenCV 也包含一个完备的、具有通用性的机器学习库(ML模块)。这个子库聚焦于统计模式识别以及聚类。ML 模块对 OpenCV 的核心任务(计算机视觉)相当有用,但是这个库也足够通用,可以用于任意机器学习问题。

OpenCV有哪些应用?

许多计算机科学家和经验丰富的程序员多多少少都了解计算机视觉的某些方面,但是很少有人熟谙计算机视觉的每一个应用。比如:
很多人了解计算机视觉在安保行业的应用;
一些人也知道它在网页端的图像和视频处理中的应用在逐渐增加。

但很少有人知道计算机视觉在游戏交互中的应用。同时,也很少有人认识到大部分航空图像和街景图像(比如说谷歌街景)已经大量应用相机校正和图像拼接技术。

有一些人略微知道一点视觉在自动监控、无人机或者生物制药分析上的应用,但很少有人知道计算机视觉早已经在制造业普遍使用。事实上,批量制造的所有东西都已经利用计算机视觉在进行某些方面的质检工作了。

自从测试版本在 1999 年 1 月发布以来,OpenCV 已经广泛用于许多应用、产品以及科研工作中。这些应用包括在卫星和网络地图上拼接图像,图像扫描校准,医学图像的降噪,目标分析,安保以及工业检测系统,自动驾驶和安全系统,制造感知系统,相机校正,军事应用,无人空中、地面、水下航行器。

它也被运用于声音和音乐的识别,在这些场景中,视觉识别方法被运用于声音的频谱图像。

OpenCV 亦是斯坦福大学的机器人斯坦利(Stanley)至关重要的一部分,这个机器人赢得了美国国防部高级研究计划署主持的 DARPA 机器人挑战赛野外机器人竞速的 200 万美元大奖。

OpenCV包含的模块以及组成结构

OpenCV 是由很多模块组成的,这些模块可以分成很多层:
最底层是基于硬件加速层(HAL)的各种硬件优化。
再上一层是 opencv_contrib 模块所包含的 OpenCV 由其他开发人员所贡献的代码,其包含大多数高层级的函数功能。这就是OpenCV的核心。
接下来是语言绑定和示例应用程序。
处于最上层的是 OpenCV 和操作系统的交互。

下图显示了 OpenCV 的这种组织关系。

OpenCV学习笔记(一)扫盲三连_第1张图片
图1:OpenCV 层级结构及其所支持的操作系统

下表给出了 OpenCV 包含的具体模块,虽然这些模块会随着时间推移而不断的发展,但模块始终是组成这个库的基本单位,每个函数都是一个模块的一部分。
OpenCV学习笔记(一)扫盲三连_第2张图片
原文链接

你可能感兴趣的:(OpenCV,Computer,Vision)