一、概述

OpenCV(Open Source Computer Vision Library官网)是一个包含数百种计算机视觉算法的开源库。本文档描述了OpenCV 2.X API(本质是一个C++ API)。
OpenCV由模块化构成,其中包含多个共享或静态库,其核心包含以下模块

  • Core functionanlity(core)核心功能:包含基本数据结构定义,包括稠密多维数组类型Mat和其他模块所需的基本函数;
  • Image Processing(imgproc)图像处理:包括线性和非线性图像滤波,图像的几何变换(缩放、仿射和透视变换、基于表格的重映射)、色域转换、直方图等;
  • Video Analysis(video)视频分析:包括运动估计、背景消除和目标跟踪算法的视频分析模块;
  • Camera Calibration and 3D Reconstruction(calib3d)相机标定和三维重建:包含基础的多视图几何、单目和立体视觉标定、位姿估计、立体匹配和元素三维重建等算法;
  • 2D Features Framework(features2d)2D特征框架:包含显著特征检测器、描述符和描述符匹配器;
  • Object Detection(objdetect)目标检测:包含目标检测和预定义类别的部分实例(人脸、眼睛、杯子、人物、汽车等);
  • High-level GUI(highgui)高级GUI:提供方便调用的简单GUI接口;
  • Video I/O(videoio)视频I/O:提供方便调用的视频采集和解码接口。
  • …一些其他辅助模块,例如FLANN和Google单元测试封装、Python绑定等。

首先,请务必熟悉库中常见的API概念:

  • cv Namespace:所有的OpenCV 类和函数均放置于cv命名空间中。因此,要在代码中调用时,请使用cv::符或using namespace cv;指令;
  • Automatic Memory Management:OpenCV自动处理所有内存;
  • Automatic Allocation of the Output Data:自动根据输出函数参数分配内存;
  • Saturation Arithmetics:饱和算法
  • Fixed Pixel Types. Limited Use of Templates:固定像素类型,限制模板使用
  • InputArray and OutputArray:输入数组和输出数组
  • Error Handing:异常处理
  • Multi-threading and Re-enterability:多线程和可重入性

    二、模块

    2.1 主要模块

    core. Core functionality