OpenCV

OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。

来源:维基百科
简介

OpenCV (Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库。OpenCV旨在为计算机视觉应用提供通用基础架构,并加速机器感知在商业产品中的应用。作为BSD授权许可的产品,OpenCV让企业可以轻松地使用和修改代码。

这个库拥有超过2500种的优化算法,涵盖了经典的和最先进的计算机视觉和机器学习算法。这些算法可用于检测和识别人脸、识别对象、区分视频中人的动作、跟踪相机移动、跟踪移动物体、提取物体的3D模型、从立体相机生成3D点云、将图像拼接在一起以产生整个场景的高分辨率图像、从图像数据库中找到相似的图像、从使用闪光灯拍摄的图像中去除红眼、跟踪眼球运动、识别景物并建立标记以将其与增强现实等叠加。OpenCV拥有超过47,000人的用户社区和超过1400万的估计下载量。该库被公司,研究团体和政府机构广泛使用。

除了谷歌、雅虎、微软、英特尔、IBM、索尼、本田、丰田等知名公司之外,还有很多初创公司,如Applied Minds,VideoSurf和Zeitera等,都广泛使用OpenCV。OpenCV的部署用途范围包括拼接街景图像,检测以色列监控视频中的入侵,监控中国的矿山设备,帮助机器人在Willow车库导航和拾取物体,检测欧洲的游泳池溺水事故,在西班牙和纽约展示交互艺术,检查土耳其跑道的碎片,检查世界各地工厂的产品标签,以及在日本进行快速人脸识别等。

OpenCV具有C++,Python,Java和MATLAB接口,支持Windows,Linux,Android和Mac OS。OpenCV主要倾向于实时视觉应用,并在可用时采用MMX和SSE指令。目前正在积极开发全功能的CUDA和OpenCL接口,有超过500个算法和大约10倍的函数来组成或支持这些算法。结合OpenCL,可以在多个计算平台下进行硬件的加速。OpenCV本身是用C ++编写的,并且有一个可与STL容器无缝协作的模板化接口。

下图为Open CV的logo:

[描述来源:OpenCV官网;URL:https://opencv.org/]

发展历史

OpenCV项目最早由英特尔公司于1999年启动,致力于CPU密集型的任务,是一个包括如光线追踪和3D显示的计划的一部分。早期OpenCV的主要目标是

  • 为推进机器视觉的研究,提供一套开源且优化的基础库。
  • 提供一个共同的基础库,使得开发人员的代码更容易阅读和转让,促进了知识的传播。
  • 通过提供一个不需要开源或免费的软件许可,促进商业应用软件的开发。
  • OpenCV现在也集成了对CUDA的支持.

OpenCV的第一个预览版本于2000年在IEEE Conference on Computer Vision and Pattern Recognition公开,并且后续提供了五个测试版本。1.0版本于2006年发布。

OpenCV的第二个主要版本是2009年10月的OpenCV 2.0。该版本的主要更新包括C++接口,更容易、更类型安全的模式,新的函数,以及对现有实现的优化(特别是多核心方面)。现在每6个月就会有一个官方版本,并由一个商业公司赞助的独立小组进行开发。

在2012年8月,OpenCV的支持由一个非盈利性组织(OpenCV.org)来提供,并保留了一个开发者网站和用户网站。

目前发布的最新版本为OpenCV 4.0

主要事件

年份

事件

相关论文/Reference

2000

首次提出OpenCV,对OpenCV的基本内容、应用等方面进行了介绍

Bradski, G., & Kaehler, A. (2000). OpenCV. Dr. Dobb’s journal of software tools, 3.

2000

OpenCV的第一个预览版本公开

http://www.drdobbs.com/open-source/the-opencv-library/184404319

2012

与GPU和OpenCL等的结合推进了OpenCV在实时视觉的应用

Pulli, K., Baksheev, A., Kornyakov, K., & Eruhimov, V. (2012). Realtime computer vision with OpenCV. Queue, 10(4), 40.

发展分析

瓶颈

-OpenCV的文档不够完善,有时不能清楚地解释参数含义及影响,代码例子少,不便于理解。

-由于是开源社区开发和维护,出现bug时的修改不能得到快速且有力的保障。

未来发展方向

OpenCV致力于在未来解决如下领域的问题:

  • 增强现实
  • 人脸识别
  • 手势识别
  • 人机交互
  • 动作识别
  • 运动跟踪
  • 物体识别
  • 图像分区
  • 机器人

Contributor: Yueqin Li

相关人物
Gary Bradski
Gary Bradski
Adrian Kaehler
Adrian Kaehler
简介
相关人物