介绍
OpenCV是一个基于BSD许可(开源)发行的跨平台 计算机视觉库。
于1999年由Intel建立,如今由Willow Garage提供支持
它轻量级而且高效:由一系列 C 函数和少量 C++ 类构成
提供 Python、Java 、 MATLAB/OCTAVE(版本2.5)的接口。这些语言的API接口函数可以通过在线文档获得。如今也提供对于C#、Ch、Ruby,GO的支持。
核心特性
| 类别 | 特性 | 描述 |
|---|---|---|
| 跨平台支持 | 多操作系统 | 支持 Windows、Linux、macOS、Android、iOS 等 |
| 编程语言 | 多语言接口 | C++(原生)、Python、Java、MATLAB/Octave 等 |
| 功能模块 | 全面覆盖 | 图像处理、特征检测、目标识别、机器学习、视频分析等 |
| 性能优化 | 高效计算 | 利用多核CPU、GPU(CUDA/OpenCL)加速,优化算法实现 |
| 开源协议 | BSD协议 | 免费用于商业和非商业用途,可自由修改和分发 |
| 社区支持 | 活跃生态 | 庞大的开发者社区,丰富的文档和教程资源 |
主要功能模块
- core:核心功能模块(矩阵操作、数据结构等)
- imgproc:图像处理(滤波、边缘检测、形态学操作等)
- imgcodecs:图像文件读写
- videoio:视频捕获和处理
- highgui:图形用户界面
- features2d:2D特征检测(SIFT、SURF、ORB等)
- objdetect:目标检测(人脸检测、Haar级联等)
- ml:机器学习算法(SVM、决策树、神经网络等)
- dnn:深度学习模块(支持TensorFlow、PyTorch模型)
- calib3d:相机标定和3D重建
支持平台
- Windows
- Linux
- Mac OS
- FreeBSD
- OpenBSD
- Android
- iOS
典型应用场景
计算机视觉:
- 人脸识别与检测
- 物体识别与跟踪
- 图像分割与重建
- 智能医疗
图像处理:
- 图像滤波与增强
- 特征提取与匹配
- 全景拼接
视频分析:
- 运动检测
- 行为识别
- 视频稳定
深度学习:
- 目标检测(YOLO、SSD)
- 图像分类
- 语义分割
工业与机器人:
- 视觉导航(汽车自动驾驶)
- 质量检测
- 3D重建
为什么有OpenCV
计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:
研究代码(慢,不稳定,独立并与其他库不兼容)
耗费很高的商业化工具(比如Halcon, MATLAB+Simulink)
依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)这是如今的现状,而标准的API将简化计算机视觉程序和解决方案的开发,OpenCV致力于成为这样的标准API。
OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。
下图为OpenCV与当前其他主流视觉函数库的性能比较。
引用:
https://baike.baidu.com/item/opencv/10320623
