1、OpenCV的数据类型
- 根据组织结构,OpenCV的数据类型主页分成三类:直接从C=++原语中继承的基本数据类型,如int、float、数组、矩阵等;辅助对象,如垃圾收集指针类、用于数据切片的范围对象、抽象的终止条件等;大型数组类型,如cv::Mat、cv::SparseMat。
- 基本数据类型:cv::Point、cv::Size、cv::Rect、cv::RotateRect、固定矩形类cv::Matx、固定向量类cv::Vec、cv::Scalar。
- 访问成员:cv::Point、cv::Size、cv::Rect、cv::RotateRect通过变量名访问,如p.x、p.y等;固定向量类cv::Vec、cv::Scalar、固定矩形类cv::Matx通过下标访问,如myvec[0]、myscalar[2]。
- 类型别名中的原语:b(unsigned int)、w(unsigned short int)、s(short int)、i(int)、f(float)、d(double)。
2、基本数据类型
基本数据类型 | 别名格式 |
cv::Point |
|
cv::Size |
|
cv::Rect |
|
cv::RotateRect |
|
cv::Complex |
|
cv::Matx |
|
cv::Vec |
|
cv::Scalar |
|
cv::Point类支持的操作 | 示例 |
默认构造函数 |
|
复制构造函数 |
|
值构造函数 |
|
构造成固定向量类 |
|
成员访问 |
|
点乘 |
|
叉乘 |
|
判断一个点是否在矩形r内 |
|
cv::Size类支持的操作 | 示例 |
默认构造函数 |
|
复制构造函数 |
|
值构造函数 |
|
成员访问 |
|
计算面积 |
|
cv::Rect类支持的操作 | 示例 |
默认构造函数 |
|
复制构造函数 |
|
值构造函数 |
|
由起始点和大小构造 |
|
由两个对角构造 |
|
成员访问 |
|
计算面积 |
|
提取左上角 |
|
提取右下角 |
|
判断点p是否在矩形r内 |
|
cv::Rect类的覆写操作符 | 示例 |
矩形r1和矩形r2的交集 |
|
同时包含矩形r1和矩形r2的最小面积矩形 |
|
矩形r平移x |
|
矩形r扩大s |
|
比较矩形r1和矩形r2是否相等 |
|
比较矩形r1和矩形r2是否不相等 |
|
cv::RotateRect类支持的操作 | 示例 |
默认构造函数 |
|
复制构造函数 |
|
由两个点构造 |
|
值构造函数 |
|
成员访问 |
|
返回四个角的列表 |
|
cv::Complex类支持的操作 | 示例 |
默认构造函数 |
|
复制构造函数 |
|
值构造函数 |
|
成员访问 |
|
复共轭 |
|
cv::Matx类支持的操作 | 示例 |
默认构造函数 |
|
复制构造函数 |
|
值构造函数 |
|
含相同元素的矩阵 |
|
全零矩阵 |
|
全一矩阵 |
|
单位矩阵 |
|
创建可容纳另一个矩阵对角线的矩阵 |
|
创建一个均匀分布的矩阵 |
|
创建一个正态分布的矩阵 |
|
成员访问 |
|
矩阵代数运算 |
|
singleton代数 |
|
比较 |
|
点积 |
|
改变矩阵形状 |
|
变换操作符 |
|
提取(i,j)处2*2的子矩阵 |
|
提取第i行 |
|
提取第j列 |
|
提取矩阵对角线 |
|
计算转置 |
|
逆矩阵 |
|
解线性系统 |
|
每个元素的乘法 |
|
cv::Vec类支持的操作 | 示例 |
默认构造函数 |
|
复制构造函数 |
|
值构造函数 |
|
成员访问 |
|
向量叉乘 |
|
cv::Scalar类支持的操作 | 示例 |
默认构造函数 |
|
复制构造函数 |
|
值构造函数 |
|
元素相乘 |
|
四元数共轭 |
|
四元数真值测试 |
|
3、辅助对象
辅助对象 | 作用 |
cv::TermCriteria |
|
cv::Range |
|
cv::Ptr |
智能指针 |
cv::Exception |
抛出异常,处理错误 |
cv::DataType<> | 传输特定数据类型 |
cv::InputArray cv::OutputArray cv::InputOutputArray cv::noArray | 常用于形参,可接受任意数组类型(如cv::Vec,cv::Mat等)作为初始值 |
4、工具函数
工具函数和系统函数 | 描述 |
cvCeil(x) | 对浮点数向上取整 |
cvFloor(x) | 对浮点数向下取整 |
cvRound(x) | 计算与浮点数最接近的整数 |
cvIsInf(x) | 判断浮点数是否是正负无穷 |
cvIsNan(x) | 判断浮点数是否不是一个数 |
cv::fastAtan2(y,x) | 计算向量的二维角度(0~360) |
cv::cubeRoot(x) | 计算立方根 |
cv::format(fmt, …) | 以sprintf类似,创建一个STL字符串 |
cv::getOptimalDFTSize(n) | 计算传递给cv::dft()的数组的最适宜大小 |
cv::alignPtr(ptr,n) | 对齐指针到给定字节数 |
cv::alignSize(sz,n) | 将缓冲区大小与给定的字节数对齐 |
cv::allocate(sz) | 与new类似,分配一个C风格的数组对象 |
cv::deallocate(ptr, sz) | 与delete类似,释放一个C风格的数组对象 |
cv::fastMalloc(size) | 与malloc类似,分配一个对齐的内存缓冲区 |
cv::fastFree(ptr) | 与free类似,释放一个cv::fastMalloc()分配的内存 |
cv::getCPUTickCount() | 获取CPU的tick数 |
cv::getTickCount() | 获取系统的tick数 |
cv::getTickFrequency() | 每秒的tick数 |
cv::setNumThreads(nthreads) | 设置使用的线程数 |
cv::getNumThreads() | 获取当前使用的线程数 |
cv::getThreadNum() | 获取当前执行的线程的索引 |
cv::setUseOptimized(on_off) | 开启或关闭代码优化功能 |
cv::useOptimized() | 判断是否开启代码优化 |
cv::CV_Assert(expt) cv::CV_DbgAssert(expt) | 判断expt,若为false则抛出异常 |
cv::CV_Error(ecode, estring) cv::CV_Error_(ecode, fmt, …) | 构造cv::Exception并抛出一个异常 |
cv::error(ex) | 提示错误并抛出异常 |
5、模板结构
通用的固定长度模板 | 描述 |
cv::Point_ | 包含两个对象的点,对象类型为T |
cv::Rect_ | 位置和宽高的类型均为T |
cv::Vec<Type T, int H> | 一个集合,元素的类型为T |
cv::Matx<Type T, int H, int W> | 一个H*W的矩阵,元素的类型为T |
cv::Scalar_ | 一个包含四个对象的集合(和cv::Vec<T,4>类似),对象类型为T |