Opencv C++ 基本数据结构 Mat | 您所在的位置:网站首页 › CV表示什么数 › Opencv C++ 基本数据结构 Mat |
Opencv C++ 基本数据结构 Mat
Mat构造单通道Mat对象获取单通道Mat的基本信息以三行两列的矩阵为例1、获取行数和列数2、使用成员函数size()获取矩阵的尺寸3、使用成员函数channels()获取矩阵的通道数4、使用成员函数total获得面积(行数乘列数)5、成员变量dims(维数)
访问单通道对象中的值1、使用成员函数at2、利用成员函数ptr3、使用成员函数isContinuous 和 ptr4、使用成员变量step和data
向量类Vec(构建多通道Mat的基础)构造多通道Mat对象访问多通道对象中的值1、使用成员函数at2、利用成员函数ptr3、使用成员函数isContinuous 和 ptr4、使用成员变量step和data5、分离通道5、合并通道
获得Mat中某一个区域的值1、使用row(i)或col(j)得到矩阵的第i行j列2、使用rowRange或colRange得到矩阵的连续行或连续列3、使用rowRange或colRange得到矩阵的连续行或连续列4、使用Rect类
Mat
Mat代表矩阵,该类声明在头文件opencv2/core/core.hpp中 其构造函数为: Mat(int rows, int cols, int type)rows代表行数,cols代表列数 type可以设置为 CV_8UC(n)、CV_8SC(n)、CV_16SC(n)、、CV_16UC(n)、CV_32FC(n)、*、CV_32SC(n)、CV_64FC(n) 其中8U、8S、16S、16U、32S、32F、64F前的数字代表Mat中每一个数值的位数 U代表uchar类型、S代表int类型、F代表浮点型(32F为float、64F为double)其他类似。 构造单通道Mat对象如代码所示: # include using namespace cv; int main() { //构造两行三列的float型矩阵 Mat m = Mat(2, 3, CV_32FC(1)); //利用Size对象构造两行3列矩阵,Size(列,行) Mat m1 = Mat(Size(3, 2), CV_32FC(1)); //使用Mat类中的成员函数create完成Mat对象构造 Mat m2; m2.create(Size(2, 3), CV_32FC1); //构造零矩阵和1矩阵 Mat o = Mat::ones(2, 3, CV_32FC1); Mat z = Mat::zeros(Size(3,2), CV_32FC1); //初始化小型矩阵 Mat m = (Mat_(2, 3) //快速构造矩阵 Mat m = (Mat_(3, 2) cout cout cout for (int c = 0; c Vec3f* ptr = mm.ptr(r); for (int c = 0; c cout cout for (int c = 0; c plane0, plane1, plane2 }; //声明一个mat对象用来保存合并后的多通道对象 Mat mat; merge(plane, 3, mat); //将三个单通道矩阵放在vector容器中 vectorpl; pl.push_back(plane0); pl.push_back(plane1); pl.push_back(plane2); Mat mat1; merge(pl, mat); 获得Mat中某一个区域的值 1、使用row(i)或col(j)得到矩阵的第i行j列 Mat mr = m.row(1); Mat mc = m.col(1); 2、使用rowRange或colRange得到矩阵的连续行或连续列首先知道Opencv中的Range类,该类用于构造连续整数序列,左闭右开。 Range(2,5)产生2、3、4序列。以5*5矩阵为例 m a t r i x = [ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ] matrix = \left[ \begin{matrix} 1 & 2 & 3 & 4 & 5\\ 6 & 7 & 8 & 9 & 10 \\ 11 & 12 & 13 & 14 & 15 \\ 16 & 17 & 18 & 19 & 20 \\ 21 & 22 & 23 & 24 & 25 \end{matrix} \right] matrix=⎣⎢⎢⎢⎢⎡16111621271217223813182349141924510152025⎦⎥⎥⎥⎥⎤ //构造一个5*5int型矩阵 Mat matrix = (Mat_(5, 5) cout cout cout cout cout cout |
CopyRight 2018-2019 实验室设备网 版权所有 |