1. OpenCV 介绍
OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 [1] 它轻量级而且高效——由一系列 C 函数和少量 C 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV用C 语言编写,它具有C ,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令, 如今也提供对于C#、Ch、Ruby,GO的支持。
2. OpenCV 发展历史
时间 | 发布版本 |
---|---|
1999年 | CVL项目启动。主要目标是人机界面,能被UI调用的实时计算机视觉库,为Intel处理器做了特定优化。 |
2006年 | 支持Mac OS的OpenCV 1.0发布。 |
2009年 | Version 2.0发布。 |
2015年 | 发布OpenCV 3.0。 |
2018年 | 发布OpenCV 4.0。 |
2022年4月 | 发布OpenCV 4.5.5。 |
注意
OpenCV 1.0版本和OpenCV 2.0版本差距比较大;OpenCV 2.0版本和OpenCV 3.0版本近似;OpenCV 3.0版本和OpenCV 4.0版本差距比较大。因此开始需要找到python对应版本的OpenCV版本。
3. OpenCV 模块
1. OpenCV 主要模块
模块 | 介绍 |
---|---|
ml | 机器学习库(Machine Learning Library, MLL)是一组可用于分类、回归和聚类目的的类和方法 |
calib3d | 摄像机标定和三维重建,包括基本的多视点几何算法、立体匹配算法、目标姿态估计、单摄像机和立体摄像机标定以及三维重建 |
features2d | 二维特征框架,该模块包括特征检测器、描述符和描述符匹配器 |
objdetect | 目标检测,检测预定义类的对象和实例(例如,人脸、眼睛、人和汽车) |
stitching | 图像拼接,实现了一个自动拼接全景图像的拼接流水线 |
photo | 计算摄影,提供一些计算摄影的函数 |
dnn | 深度神经网络(Deep neural network, DNN)模块,本模块包含以下内容:用于创建新层的API、一组预定义的常用层、从层构造和修改神经网络的API、从不同深度学习框架加载序列化网络模型的功能等 |
Core | 核心模块,是定义基本数据结构的模块,也包括库中所有其他模块使用的基本函数 |
Imgproc | 图像处理模块,包括图像滤波、几何图像变换、颜色空间变换和直方图 |
Imgcodecs | 图像文件读写 |
HighGui | 高级GUI,提供UI功能的接口,可以执行以下操作:创建和操作可以显示的窗口、将滑动条添加到窗口、键盘命令和处理鼠标事件等 |
VideoIO | 视频I/O,视频捕获和视频编解码器的接口 |
Video | 视频分析模块,包括背景减法、运动估计和目标跟踪算法 |
2. OpenCV 扩展模块
视频编码解码、CUDA加速、IE加速、DNN扩展功能、背景分析、图像分析、光流分析。
3. 注意
- 没有足够稳定性;
- 需要自己编译。
4. OpenCV 源码和教程
- GitHub源码
- OpenCV 4.5.5 文档
5. OpenCV-Python 安装
1. 只安装【主模块】
代码语言:javascript复制pip install opencv-python==4.6.0.66
2. 使用镜像安装 OpenCV-Python
代码语言:javascript复制pip install opencv-python==4.6.0.66 -i https://pypi.tuna.tsinghua.edu.cn/simple
3. 安装【主模块和附加模块】
代码语言:javascript复制pip install opencv-contrib-python
4. 注意
在不使用附加模块的情况,尽量只安装主模块!