OpenCV计算机视觉库
OpenCV 全称为 Open Source Computer Vision Library,是一个跨平台的开源计算机视觉和机器学习软件库,可用于开发实时的图像处理、计算机视觉以及模式识别程序。该程序库也可以使用英特尔公司的 IPP 进行加速处理。
OpenCV 旨在为计算机视觉应用程序提供通用基础架构,并加速机器感知在商业产品中的使用。
该库有2500多种优化算法,其中包括一套全面的经典和最先进的计算机视觉和机器学习算法。这些算法可用于检测和识别人脸、识别物体、对视频中的人类行为进行分类、跟踪摄像机运动、跟踪移动物体、提取物体的三维模型、从立体摄像机中产生三维点云、将图像拼接起来以产生整个场景的高分辨率图像、从图像数据库中找到类似的图像、从使用闪光灯拍摄的图像中去除红眼、跟踪眼睛的运动、识别风景并建立标记以叠加到增强现实中等等。OpenCV拥有超过4.7万人的用户群,估计下载量超过1800万。该库在公司、研究小组和政府机构中被广泛使用。
除了谷歌、雅虎、微软、英特尔、IBM、索尼、本田、丰田等知名公司外,还有许多初创公司,如 Applied Minds、VideoSurf 和 Zeitera 等都在广泛使用 OpenCV。OpenCV 的应用范围很广,包括将街景图像拼接在一起,在以色列检测监控视频中的入侵行为,在中国监控矿山设备,在Willow Garage帮助机器人导航和拾取物体,在欧洲检测游泳池溺水事故,在西班牙和纽约运行互动艺术,在土耳其检查跑道上的碎片,在世界各地的工厂检查产品的标签,以及在日本快速检测人脸。
它有 C++、Python、Java 和 MATLAB 接口,支持Windows、Linux、 Android 和Mac OS。OpenCV 主要倾向于实时视觉应用程序,并在可用时利用 MMX 和 SSE 指令。 目前正在积极开发功能齐全的 CUDA 和 OpenCL 接口。有超过 500 种算法和大约 10 倍的函数组成或支持这些算法。OpenCV 是用 C++ 原生编写的,具有可与 STL 容器无缝协作的模板化接口。
OpenCV 具有模块化结构,这意味着该软件包包含多个共享或静态库。以下模块可用:
- 核心功能(core)- 定义基本数据结构的紧凑模块,包括密集的多维数组 Mat 和所有其他模块使用的基本功能。
- 图像处理( imgproc ) - 一个图像处理模块,包括线性和非线性图像过滤、几何图像变换(调整大小、仿射和透视变形、通用的基于表格的重新映射)、色彩空间转换、直方图等。
- Video Analysis ( video ) - 一个视频分析模块,包括运动估计、背景减除和对象跟踪算法。
- 相机校准和 3D 重建( calib3d ) - 基本的多视图几何算法、单相机和立体相机校准、物体姿态估计、立体对应算法和 3D 重建的元素。
- 2D 特征框架( features2d ) - 显着特征检测器、描述符和描述符匹配器。
- 对象检测( objdetect ) - 检测预定义类的对象和实例(例如,面部、眼睛、杯子、人、汽车等)。
- 高级 GUI ( highgui ) - 简单 UI 功能的易于使用的界面。
- 视频 I/O ( videoio ) - 一个易于使用的视频捕获和视频编解码器接口。
- ...一些其他帮助模块,例如 FLANN 和 Google 测试包装器、Python 绑定等。