一、OpenCV简介
OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉处理开源软件库,是由Intel公司俄罗斯团队发起并参与和维护,支持与计算机视觉和机器学习相关的众多算法,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序,该程序库也可以使用英特尔公司的IPP进行加速处理。
二、OpenCV优势
编程语言
OpenCV基于C++实现,同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是OpenCV的Python API,结合了OpenCV C++API和Python语言的最佳特性。跨平台
OpenCV可以在不同的系统平台上使用,包括Windows,Linux,OS,X,Android和iOS。基于CUDA和OpenCL的高速GPU操作接口也在积极开发中。活跃的开发团队
自从第一个预览版本于2000年公开以来,一直在进行更新。丰富的API
完善的传统计算机视觉算法,涵盖主流的机器学习算法,同时添加了对深度学习的支持。
三、OpenCV应用领域
1、人机互动
2、物体识别
3、 图像分割
图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。
4、人脸识别
5、动作识别
6、 运动跟踪
7、机器人
8、运动分析
9、机器视觉
10、结构分析
11、汽车安全驾驶
四、OpenCV-Python
Opencv-Python是旨在解决计算机视觉问题的专用库。
Python是由Guidovan Rossum发起的通用编程语言,很快就非常流行,主要是因为他的简单性和代码可读性。它使得程序员可以用较少的代码行表达想法,而不会降低可读性。与C/C++之类的语言,Python速度较慢。也就是说,可以使用C/C++轻松扩展Python,这使得我们能够用C/C++编写计算机密集型代码并创建可用作Python模块的Python包装器。它给我们带来了两个好处: 首先,代码与原始C/C++代码一样快(因为它是在后台运行的实际C++代码), 其次,在Python中比C/C++编写代码更容易。Opencv-Python是原始Opencv C++实现的Python包装器。
Opencv-Python利用了Numpy,这是一个高度优化的库,用于使用MATLAB样式的语言进行数值运算。所有Opencv数组结构都与Numpy数组相互转换。这也使与使用Numpy的其他库(例如Scipy和Matplotlib)的集成变得更加容易。
五、OpenCV核心模块介绍
Core:核心组件模块
包含:基础结构和操作,动态结构,数组操作,绘图函数,XML等等。
Imgproc:图像处理模块
包含:图像滤波,几何图像变换,混合图像变换,直方图,形状匹配运动分析及目标追踪,目标检测。
Highguii:顶层GUI及视频I/O
包含:用户界面,读写视频,QT新功能。
Video:视频分析
包含:运动分析及目标跟踪。
Calib3d:摄像机标定及三维重建
Features2d:二维特征框架
包含:特征描述和检测,特征提取,角点与匹配等等。
Objdetect:目标检测
包含:SVM及其它分类器
Mi:机器学习
包含:支持向量机,决策树,随机树,最大期望,神经网络,机器学习等等。
Flann:聚类及多维空间搜索
包含:快速最近邻搜索及聚合
GPU:计算机视觉中GPU加速
包含:GPU模块及数据结构,图像分析和处理。
Photo:计算图像
包含:图像修复及去噪。
Stitching:图像拼接
包含:图像拼接,接缝估计,图像融合技术。
Nonfree:付费功能
包含:特征检测与描述相关受保护成果。
Contrib:实验成果
未成熟的理论应用。
Legacy:弃用的成果
包含一些弃用的成果。
Ocl:计算机视觉中OpenCL加速