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();
输出数据的自动分配
*灰度图像通道数量为一
限制使用模板
- opencv教程(一)(c++)
- Opencv教程(一) 安装和配置
- codeblocks搭建opencv完整教程(一)
- 《C语言程序设计教程》(一)
- 计算机视觉之OpenCV教程 ---Mat类基础(一)
- Windows c语言自学教程(一)
- c++教程(一)c过渡c++
- 简明C语言教程(一)前言
- OpenCV学习(一)
- opencv笔记(一)
- opencv初学(一)
- OpenCV小记(一)
- 学习OpenCV(一)
- 初学opencv(一)
- OpenCV入门(一)
- OpenCV入门(一)
- opencv 学习(一)
- openCV学习(一)
- js阻止事件冒泡
- 【GDOI2018模拟7.12】B 矩阵乘法+dp
- 【iOS】第02讲 多线程NSThread/GCD/RunLoop/NSTimer/Socket数据传输
- Yii待条件的查询问题
- vue-router命名视图
- opencv教程(一)(c++)
- SQL Server CLR全功略之三---CLR标量函数、表值函数和聚合函数(UDA)
- eclipse配置Maven
- jQuery中on与click的区别
- 快速排序
- hdu2209
- TFFRCNN修改自己的样本
- Test 2 for NOIP- Result for Day1
- 在水晶报表中显示条形码/二维码(BY 冷家锋)