一、 OpenCV 简介
OpenCV(开源计算机视觉库 http://opencv.org ) 是一个开源的BSD许可库,包含数百种计算机视觉算法。 该文档描述了所谓的OpenCV 2.x API,它本质上是一个C ++ API,与基于C语言的OpenCV 1.x API有所差异。此文档针对于OpenCV 2.X API翻译,OPenCV 1.X API.pdf有关于C语言接口解释,敬请关注。
官方文档:
OpenCV 教程 — OpenCV 2.3.2 documentation http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html
OpenCV具有模块化结构,这意味着该包包含多个共享库或静态库。 可以使用以下模块:
- Core functionality:基础数据模块,包含一些发杂数据结构和基本函数方法。
- Image processing :图像处理模块,包括线性和非线性图像滤波,几何图像变换(调整大小,仿射和透视扭曲,基于通用表的重新映射),颜色空间转换,直方图等。
- video : 视频分析模块,包括运动估计,背景减法和对象跟踪算法。
- calib3d : 基本的多视图几何算法,单一和立体摄像机校准,对象姿态估计,立体视觉匹配算法和3D重建元素。
- features2d : 特征检测器,描述符和描述符匹配器。
- objdetect : 检测预定义类的对象和实例(例如,面部,眼睛,马克杯,人,汽车等)。
- highgui :UI界面以及UI功能
- Video I/O :简单的视频捕获和视频编解码器接口。
- gpu : 支持不同OpenCV模块的GPU加速算法.
- ... 一些其他帮助器模块,例如FLANN和Google测试包装器,Python绑定等。
文档的后续章节讲述了每个模块的功能。 但首先,请确保熟悉库中彻底使用的常见API概念。
二、API 概述
2.1 cv Namespace
所有OpenCV类和函数都放在cv命名空间中。 因此,要从代码中访问此功能,请使用cv :: specifier或using namespace cv; 指示:
#include "opencv2/core.hpp"
...
cv::Mat H = cv::findHomography(points1, points2, CV_RANSAC, 5);
...
or :
#include "opencv2/core.hpp"
using namespace cv;
...
Mat H = findHomography(points1, points2, CV_RANSAC, 5 );
...
在遇到OpenCV外部名称可能与STL或其他库冲突。 在这种情况下,使用显式名称空间说明符来解决名称冲突:
Mat a(100, 100, CV_32F);
randu(a, Scalar::all(1), Scalar::all(std::rand()));
cv::log(a, a);
a /= std::log(2.);
参考:
简介 - 简书 https://www.jianshu.com/p/299433ec71fe
opencv 3.0 常用函数 (1) - 简书 https://www.jianshu.com/p/d67f53413c14
学习资料
https://blog.csdn.net/manyouxianfeng/article/details/78049648