OpenCV Introduction(Open CV介绍)

来源:互联网 发布:收藏品数据从哪找啊 编辑:程序博客网 时间:2024/06/17 00:22

1.OpenCV具有模块化结构,这意味着该软件包包含多个共享或静态库。以下模块可用:

核心功能 - 定义基本数据结构的紧凑模块,包括密集的多维数组Mat和所有其他模块使用的基本功能。
图像处理 - 一个图像处理模块,包括线性和非线性图像滤波,几何图像转换(调整大小,仿射和透视变形,基于通用表格的重新映射),色彩空间转换,直方图等。
视频 - 视频分析模块,包括运动估计,背景扣除和对象跟踪算法。
calib3d - 基本多视图几何算法,单个和立体相机校准,对象姿态估计,立体对应算法和三维重建元素。
特征 2d - 显着特征检测器,描述符和描述符匹配器。
objdetect -预定义的类的对象和实例的检测(例如,脸,眼睛,杯子,人,车,等等)。
highgui - 简单的用户界面功能的简单易用的界面。
视频I / O - 一个易于使用的视频捕捉和视频编解码器界面。
gpu - 来自不同OpenCV模块的GPU加速算法。
...一些其他的辅助模块,如FLANN和Google测试包装,Python绑定等等。

文档的其他章节描述了每个模块的功能。但是首先要确保熟悉库中使用的通用API概念。

2.API概念

cv Namespace

All the OpenCV classes and functions are placed into the cv namespace. Therefore, to access this functionality from your code, use the cv:: specifier or using namespace cv; directive     所有的OpenCV类和函数都被放置在cv命名空间中。因此,要从您的代码中访问此功能,请使用cv ::说明符或使用命名空间cv; 指示:

#include "opencv2/core.hpp"...cv::Mat H = cv::findHomography(points1, points2, CV_RANSAC, 5);...或者#include "opencv2/core.hpp"using namespace cv;...Mat H = findHomography(points1, points2, CV_RANSAC, 5 );...

Some of the current or future OpenCV external names may conflict with STL or other libraries. In this case, use explicit namespace specifiers to resolve the name conflicts:          一些当前或未来的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.)



原创粉丝点击