OPENCV核心类Mat的基本知识介绍及其使用(一)

1,Mat介绍

Mat是matrix的缩写,即代表矩阵或数组的意思。在opencv中关于该类的声明在opencv2/core/core.hpp中,因此使用该类的时候就需要引用此头文件。

构造一个Mat矩阵需要十个基本要素:行数(宽)、列数(高)、通道数、数据类型:Mat(int rows,int cols,int type),其中的type就是CV_8UC(n),CV_8SC(n),CV_16SC(n),CV_32FC(n)等类型,前面的8U、8S、32F中的数值代表bit,后面的U,F,S代表数据类型:如U代表uchar,一般1byte=8bit,所以32F就是占4字节的float类型。后面的C(n)中的n=1则代表是单通道或者可以说二维矩阵,n>1则代表着多通道或者三维矩阵。

Mat的使用方法

1,首先构造一个单通道的Mat对象,代码如下:

#include "pch.h"
#include <iostream>
#include <opencv2/core/core.hpp>
using namespace cv;
int main()
{
	Mat m = Mat(2, 3, CV_32FC1);
	return 0;
}

这就是一个单纯的构造Mat对象代码,那么想要往Mat里面添加数据呢?
如下,添加一个2行3列的0矩阵:

#include "pch.h"
#include <iostream>
#include <opencv2/core/core.hpp>
using namespace cv;
int main()
{
	Mat m = Mat::zeros(2, 3, CV_32FC1);
	return 0;
}

或者这样:

#include "pch.h"
#include <iostream>
#include <opencv2/core/core.hpp>
using namespace cv;
int main()
{
	Mat m = (Mat_<int>(2, 3) << 1, 2, 3, 4, 5, 6);
	return 0;
}

2,如何访问Mat中的值
对于Mat值的访问,加入数据格式为int型的m,访问第r行第c列可以用成员函数at,格式为m.at(r,c),代码如下:


#include "pch.h"
#include <iostream>
#include <opencv2/core/core.hpp>
using namespace cv;
using namespace std;
int main(int argc,char* argv[])
{
	//构造一个单通道矩阵
	Mat m = (Mat_<int>(2, 3) << 11, 22, 33, 44, 55, 66);
	//打印m中的每一个值
	for (int r = 0; r < m.rows; r++)
	{
		for (int c = 0; c < m.cols; c++)
		{
			cout << m.at<int>(r, c) << ",";//第r行第c列的值
		}
		cout << endl;
	}
}

结果:
在这里插入图片描述
未完待续。。。。

参考张平老师的opencv算法精解。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值