什么是OpenCV
开源机器视觉计算库,基于C++编写,致力于高效、实时计算。
OpenCV起源于英特尔想要增强CPU集群性能的研究,由Gary Bradski提出,OpenCV设计之初就是为了提供计算机视觉通用性接口,创建目标:
- 为高级的视觉研究提供开源并且优化过的基础代码,不需要重复造轮子;
- 以提供开发者可以在此基础上进行开发的通用接口为手段传播视觉相关支持,这样代码有更强的可读性和移植性;
- 以创造可移植的、优化过的免费开源代码来推动基于高级视觉的商业应用,这些代码可以自由使用,不要求商业应用程序开放或免费;
OpenCV结构
Opencv是由层级结构组织的
- 处于最上层的是OpenCV和操作系统的交互;
- 下一层是各种编程语言Python/Java接口绑定层和应用示例层;
- OpenCV Contrib层包含了其他开发人员贡献的代码,办好了大多数高层级的函数功能;
- 底层是硬件加速层HAL的各种硬件优化;

当前OpenCV(4.x*)主要构成的模块
| 模块 | 说明 | |
|---|---|---|
| calib3d | 相机标定及三维重建 | |
| core | ||
| dnn | ||
| features2d | ||
| flann | ||
| gapi | ||
| highgui | ||
| imgcodecs | ||
| imgproc | ||
| java | ||
| js | ||
| ml | ||
| objc | ||
| objdetect | ||
| photo | ||
| python | ||
| stitching | ||
| ts | ||
| video | ||
| videoio | ||
| world | ||
