Opencv C++ 基本数据结构 Mat 您所在的位置:网站首页 CV表示什么数 Opencv C++ 基本数据结构 Mat

Opencv C++ 基本数据结构 Mat

2024-02-04 22:15| 来源: 网络整理| 查看: 265

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=⎣⎢⎢⎢⎢⎡​16111621​27121722​38131823​49141924​510152025​⎦⎥⎥⎥⎥⎤​

//构造一个5*5int型矩阵 Mat matrix = (Mat_(5, 5) cout cout cout cout cout cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有