2.0新版本对数据结构进行了大幅修改:
2016-03-14 12:51
267 查看
2.0新版本对数据结构进行了大幅修改:
定义了DataType类
定义了Point_模板类,取代了之前版本的CvPoint、CvPoint2D32f
定义了Point3_模板类,取代了之前版本的CvPoint2D32f
定义了Size_模板类,取代了之前版本的CvSize和CvSize2D32f
定义了Rect_模板类,取代了之前版本的CvRect
RotatedRect模板类,
TermCriteria模板类,取代了之前的CvTermCriteria,这个类是作为迭代算法的终止条件的,这个类在参考手册里介绍的很简单,我查了些资料,这里介绍一下。该类变量需要3个参数,一个是类型,第二个参数为迭代的最大次数,最后一个是特定的阈值
Matx模板类。Matx模板类是对Mat类的一个拓展,从Matx类有派生出Vec类,又Vec类又派生出Scalar_类,取代了CvScalar
定义了Range类指定了一个序列的一个连续的子序列
定义了Ptr类用来对老版本的数据结构进行指针操作,更安全有效,可以防止内存的不正常使用。
最最重要的定义了Mat类来表示矩阵,取代了之前的CvMat和lplImage。Mat结构支持的操作有:
构造析构函数Mat和~Mat
对=、MatExpr、( )、CvMat、IplImage进行了运算符重载
row、col函数
rowRange、colRange
类似matlab的运算操作diag、t、inv、mul、cross、dot、zeros、one、eye
复制转换变形clone、copyTo、convertTo、assignTo、setTo、reshape、create、addref
其中copyTo函数有个妙用,不但可以复制Mat,还可以通过mask提取出感兴趣的部分
数据的操作release、resize、reserve、push_back、pop_back、locateROI、adjustROI
Mat的信息total、isContinuous、elemSize、elemSize1、type、depth、channes、step1、size、empty
定位ptr、at、begin、end
还做了几个扩展类Mat_、NAryMatlterator、SparseMat、SparseMat_取代了之前的CvSparseMat。这些类的操作运算与Mat大同小异,类声明参考core的具体头文件
当然,新版本对老版本的数据结构和函数依然支持。
新版本还在这些结构里支持dft、dct变换,我这里讲一下我的新发现PCA类、SVD类
PCA类有构造函数PCA,运算符重载(),project,backProject。SVD类有构造函数SVD,运算符重载(),compute,solveZ,backSubst
这里介绍几个我使用过的实用函数:
inRange函数可以检查Matsrc的内容是否在Matlower、Matupper之间,输出结果是一个uchar型矩阵,1表示在两者之间,否则为0,值得注意的是,Matlower,Matupper也可以用Scalar的格式
bitwise_xxx函数对两个矩阵进行位运算,结果保存在第三个矩阵当中
mixChannels函数可以实现矩阵的指定通道复制到新矩阵的指定通道
总之,新版本支持更多的数学运算,还支持一些画图操作
定义了DataType类
定义了Point_模板类,取代了之前版本的CvPoint、CvPoint2D32f
定义了Point3_模板类,取代了之前版本的CvPoint2D32f
定义了Size_模板类,取代了之前版本的CvSize和CvSize2D32f
定义了Rect_模板类,取代了之前版本的CvRect
RotatedRect模板类,
TermCriteria模板类,取代了之前的CvTermCriteria,这个类是作为迭代算法的终止条件的,这个类在参考手册里介绍的很简单,我查了些资料,这里介绍一下。该类变量需要3个参数,一个是类型,第二个参数为迭代的最大次数,最后一个是特定的阈值
Matx模板类。Matx模板类是对Mat类的一个拓展,从Matx类有派生出Vec类,又Vec类又派生出Scalar_类,取代了CvScalar
定义了Range类指定了一个序列的一个连续的子序列
定义了Ptr类用来对老版本的数据结构进行指针操作,更安全有效,可以防止内存的不正常使用。
最最重要的定义了Mat类来表示矩阵,取代了之前的CvMat和lplImage。Mat结构支持的操作有:
构造析构函数Mat和~Mat
对=、MatExpr、( )、CvMat、IplImage进行了运算符重载
row、col函数
rowRange、colRange
类似matlab的运算操作diag、t、inv、mul、cross、dot、zeros、one、eye
复制转换变形clone、copyTo、convertTo、assignTo、setTo、reshape、create、addref
其中copyTo函数有个妙用,不但可以复制Mat,还可以通过mask提取出感兴趣的部分
数据的操作release、resize、reserve、push_back、pop_back、locateROI、adjustROI
Mat的信息total、isContinuous、elemSize、elemSize1、type、depth、channes、step1、size、empty
定位ptr、at、begin、end
还做了几个扩展类Mat_、NAryMatlterator、SparseMat、SparseMat_取代了之前的CvSparseMat。这些类的操作运算与Mat大同小异,类声明参考core的具体头文件
当然,新版本对老版本的数据结构和函数依然支持。
新版本还在这些结构里支持dft、dct变换,我这里讲一下我的新发现PCA类、SVD类
PCA类有构造函数PCA,运算符重载(),project,backProject。SVD类有构造函数SVD,运算符重载(),compute,solveZ,backSubst
这里介绍几个我使用过的实用函数:
inRange函数可以检查Matsrc的内容是否在Matlower、Matupper之间,输出结果是一个uchar型矩阵,1表示在两者之间,否则为0,值得注意的是,Matlower,Matupper也可以用Scalar的格式
bitwise_xxx函数对两个矩阵进行位运算,结果保存在第三个矩阵当中
mixChannels函数可以实现矩阵的指定通道复制到新矩阵的指定通道
总之,新版本支持更多的数学运算,还支持一些画图操作
相关文章推荐
- 数据结构与算法面试题80道(30)
- 堆排序(绝对详细)
- 栈的应用—平衡符号
- 数据结构与算法面试题80道(29)
- 数据结构第一次上机实践
- 数据结构笔记-----队列
- [转载] SBT(Size Balanced Tree)
- 数据结构(4)线性表之链式表示
- 数据结构(2):链表
- 实现栈的逆序 递归 不申请额外的数据结构
- 线性结构
- 数据结构之邻接表
- 通用树的存储结构
- 《大话数据结构》学习记录2--第3章的单链表
- 数据结构――广义表
- 数据结构笔记-----递归与栈
- 数据结构与算法系列----Sparse Table算法(RMQ问题)
- 并查集
- 数据结构与算法面试题80道(28)
- 数据结构与算法面试题80道(27)