opencv教程(一)(c++)

来源:互联网 发布:深入浅出java pdf下载 编辑:程序博客网 时间:2024/06/01 21:27

opencv教程3.1.0(一)(c++)

opencv包含以下几个模块,每个模块中包含一些共享或者静态的库
1.core:核心组件模块
基础结构及操作,动态结构,数组操作,绘图函数、XML/YAML、聚类及实用程序和系统函数宏。
2.Imagpro:图像处理模块
包括线性和非线性图像滤波,几何图像变换(调整大小,仿射和透视扭曲,通用的基于表的重新映射),色彩空间转换,直方图等的图像处理模块。
3.video:视频分析模块,包括运动估计,背景减除和对象跟踪算法。
4.calib3d:基本的多视图几何算法,单个和立体相机校准,物体姿态估计,立体声对应算法和3D重建的元素。
5.features2d:2维特征框架
特征检测与描述,特征检测提取匹配接口,关键点与匹配点绘图及对象分类。
6.objdetect:检测对象和预定义类的实例(例如,面部,眼睛,杯子,人,汽车等)。级联分类器及SVM。
7.highgui:顶层GUI及视频I/O
用户界面,读/写图像及视频,QT新功能。
cv Namespace
所有OpenCV类和函数都被放置在cv命名空间中。 因此,要从代码访问此功能,需使用cv :: specifier或使用命名空间cv;
**个人理解是有了cv可以调用#include中的方法,两者互相关联。
1

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

2

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

为了防止cv可能与STL或者其他库冲突,我们用第一种方法。
自动内存管理
opencv自动管理内存问题
首先,函数和方法使用的std :: vector,Mat和其他数据结构具有析构函数,在需要时释放基础内存缓冲区。 这意味着在Mat的情况下,析构函数并不总是释放缓冲区。 他们考虑到可能的数据共享。 析构函数将与矩阵数据缓冲器相关联的引用计数器递减。 当且仅当引用计数器达到0时,即当没有其他结构指向相同的缓冲区时,缓冲区被解除分配。 类似地,当Mat实例被复制时,实际数据不会被真正复制。 相反,引用计数器增加以记住拥有相同数据的另一个所有者。 还有Mat :: clone方法可以创建矩阵数据的完整副本。 见下面的例子:

// create a big 8Mb matrixMat A(1000, 1000, CV_64F);// create another header for the same matrix;// this is an instant operation, regardless of the matrix size.Mat B = A;// create another header for the 3-rd row of A; no data is copied eitherMat C = B.row(3); // now create a separate copy of the matrix Mat D = B.clone(); // copy the 5-th row of B to C, that is, copy the 5-th row of A// to the 3-rd row of A. B.row(5).copyTo(C);// now let A and D share the data; after that the modified version // of A is still referenced by B and C. A = D; // now make B an empty matrix (which references no memory buffers), // but the modified version of A will still be referenced by C, // despite that C is just a single row of the original AB.release(); // finally, make a full copy of C. As a result, the big modified// matrix will be deallocated, since it is not referenced by anyoneC = C.clone();

输出数据的自动分配
*灰度图像通道数量为一
限制使用模板

原创粉丝点击