【无标题】opencv入门——关于Mat

在OpenCV中,Mat是一个非常重要的类,用于表示图像和矩阵。今天介绍如何构造Mat对象,并提供一些实例代码来帮助理解。

1.函数定义

Mat类的构造函数有多种形式,下面列出了其中一些常用的:

Mat(): 默认构造函数,创建一个空矩阵。
Mat(int rows, int cols, int type): 创建指定行数、列数和数据类型的矩阵。
Mat(Size size, int type): 创建指定大小和数据类型的矩阵。
Mat(int rows, int cols, int type, const Scalar& s): 创建指定行数、列数和数据类型的矩阵,并用指定的标量值初始化所有元素。
Mat(Size size, int type, const Scalar& s): 创建指定大小和数据类型的矩阵,并用指定的标量值初始化所有元素。
Mat(const Mat& m): 复制构造函数,创建一个与给定矩阵相同的矩阵。
Mat(int ndims, const int* sizes, int type): 创建指定维度、大小和数据类型的多维矩阵。
其中,type参数指定了矩阵的数据类型,可以是下列之一:

CV_8U: 无符号8位整型。
CV_8S: 有符号8位整型。
CV_16U: 无符号16位整型。
CV_16S: 有符号16位整型。
CV_32S: 有符号32位整型。
CV_32F: 单精度浮点型。
CV_64F: 双精度浮点型。
2.说明

Mat(): 默认构造函数,创建一个空矩阵。
这个构造函数创建一个空矩阵,即没有分配任何内存空间。可以通过调用create()函数或者赋值运算符来分配内存空间并初始化矩阵。

Mat(int rows, int cols, int type): 创建指定行数、列数和数据类型的矩阵。
这个构造函数创建一个指定大小和类型的矩阵。其中,rows参数指定矩阵的行数,cols参数指定矩阵的列数,type参数指定矩阵的数据类型。

Mat(Size size, int type): 创建指定大小和数据类型的矩阵。
这个构造函数创建一个指定大小和类型的矩阵。其中,size参数指定矩阵的大小,type参数指定矩阵的数据类型。

Mat(int rows, int cols, int type, const Scalar& s): 创建指定行数、列数和数据类型的矩阵,并用指定的标量值初始化所有元素。
这个构造函数创建一个指定大小和类型的矩阵,并用指定的标量值初始化所有元素。其中,rows参数指定矩阵的行数,cols参数指定矩阵的列数,type参数指定矩阵的数据类型,s参数指定用来初始化矩阵的标量值。

Mat(Size size, int type, const Scalar& s): 创建指定大小和数据类型的矩阵,并用指定的标量值初始化所有元素。
这个构造函数创建一个指定大小和类型的矩阵,并用指定的标量值初始化所有元素。其中,size参数指定矩阵的大小,type参数指定矩阵的数据类型,s参数指定用来初始化矩阵的标量值。

Mat(const Mat& m): 复制构造函数,创建一个与给定矩阵相同的矩阵。
这个构造函数创建一个与给定矩阵相同大小和类型的矩阵,且矩阵元素与给定矩阵相同。

Mat(int ndims, const int* sizes, int type): 创建指定维度、大小和数据类型的多维矩阵。
这个构造函数创建一个指定维度、大小和类型的多维矩阵。其中,ndims参数指定矩阵的维度,sizes参数指定每个维度的大小,type参数指定矩阵的数据类型。

3.实例代码

下面是一些Mat类构造函数的实例代码:

// 创建一个空矩阵
Mat mat1;

// 创建一个3行4列、无符号8位整型的矩阵
Mat mat2(3, 4, CV_8U);

// 创建一个大小为640x480、单精度浮点型的矩阵
Mat mat3(Size(640, 480), CV_32F);

// 创建一个3行4列、无符号8位整型的矩阵,并用0初始化所有元素
Mat mat4(3, 4, CV_8U, Scalar(0));

// 创建一个大小为640x480、单精度浮点型的矩阵,并用0初始化所有元素
Mat mat5(Size(640, 480), CV_32F, Scalar(0));

// 创建一个与mat5相同大小和类型的矩阵
Mat mat6(mat5);

// 创建一个3维、大小分别为2x3x4、有符号32位整型的矩阵
int sizes[] = {2, 3, 4};
Mat mat7(3, sizes, CV_32S);

猜你喜欢

转载自blog.csdn.net/lang_shi/article/details/129656676