什么是OpenCV?
OpenCV 是一个开源的计算机视觉库,提供易于使用的计算机视觉接口,从而帮助人们快速建立精巧的视觉应用。
什么是计算机视觉呢?
计算机视觉这种技术可以将静止图像或视频数据转换为一种决策或新的表示。所有这样的转换都是为了完成某种特定的目的而进行的。
以下是 OpenCV 想要完成的一些目标:
为高级的视觉研究提供开源并且优化过的基础代码,不再需要重复造轮子。
以提供开发者可以在此基础上进行开发的通用接口为手段传播视觉相关知识,这样代码有更强的可读性和移植性。
以创造可移植的、优化过的免费开源代码来推动基于高级视觉的商业应用,这些代码可以自由使用,不要求商业应用程序开放或免费。
OpenCV 拥有的主要模块:
Core:该模块包含 OpenCV 库的基础结构以及基本操作。
Improc:图像处理模块包含基本的图像转换,包括滤波以及类似的卷积操作。
Highgui:在 OpenCV 3.0中,分割为 imcodecs、videoio 以及 highgui 三部分。这个模块包含可以用来显示图像或者简单的输入的用户交互函数。这可以看作是一个非常轻量级的 Windows UI 工具包。
Video:该模块包含读取和写视频流的函数。
Calib3d:这个模块包括校准单个、双目以及多个相机的算法实现。
Feature2d:这个模块包含用于检测、描述以及匹配特征点的算法。
Objdectect:这个模块包含检测特定目标,比如人脸或者行人的算法。也可以训练检测器并用来检测其他物体。
Ml:机器学习模块本身是一个非常完备的模块,包含大量的机器学习算法实现并且这些算法都能和 OpenCV 的数据类型自然交互。
等等……
OpenCV 基本 API 概念:
Mat 类是存储和操作 OpenCV 中图像的主要数据结构。这个类是在 core 模块中定义的。