当前位置:首页 > Windows程序 > 正文

【循序渐进地学好OpenCV3】OpenCV 2.0 API

2021-03-25 Windows程序

OpenCV(Open Source Computer Vision Library)是基于BSD开源许可协议的一套计算机视觉开源库,里面包含了几百个计算机视觉算法。在包括物体识别、人脸识别、图像处理等在内的多种计算机视觉应用领域中被大量应用。

OpenCV的API目前分为1.0和2.0版本(3.0的正式版本在今年也已经出来了,但目前没有去尝试过),1.0版本是用C语言实现的,2.0主要是C++,2.0版本的已显著优化,所以我们学习的也将是2.0版本的OpenCV,我们在上一篇的实例其实使用还是1.0版本的API,但以后就会改成2.0了。

Open里的API OpenCV 里的模块

OpenCV有着模块化结构,下面是一些我们会常用到的模块:

core - 定义基本的数据结构和一些底层的方法,被其他模块所调用

imgproc - 图像处理模块,包含线性和非线性的图像过滤器、几何图像变换、颜色空间转换、直方图均衡等等

video - 视频分析模块,包括运动估计、背景差分、目标跟踪算法

calib3d - 3D图像处理模块,有基本的多视角几何算法、立体通信算法、单体和立体相机的标定、对象姿态估计、双目立体匹配算法和元素的三维重建

features2d - 特征检测、描述、匹配算法模块,包含了显著特征检测算法、描述算子和算子匹配算法

objdetect - 目标检测模块,,包括实物检测和一些预定义的物体的检测,如人脸、眼睛、杯子、行人、汽车等

highgui - UI接口模块,为视频捕捉、图像和视频编码等功能提供易用的UI接口

gpu - gpu模块,用于支持其他模块的GPU加速算法

。。。。还有一些支持模块,如FLANN等

要用到命名空间

前面说过,OpenCV2.0是基于C++,这在API里有很好的体现,就是2.0所有的API和结构体都是需要声明命名空间的,它们全部在名称空间cv里,例如,当使用Mat时,需要这样:

cv::Mat H;

或者是:

using namespace cv; void main() { Mat mat; }

这是因为OpenCV中有些现存的或者以后新版本中会有一些命名与STL库或者其他库因同名而冲突。如果需要用到两个冲突的类型或函数,就要用cv::显示地声明名称空间。

官方文档下载(英文版)

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67294.html