一、Mat类知识点:
1、Mat无参构造对象
(1)、Mat();
(2)、调用无参构造,不为对象成员变量(数据指针data)分配内存。
(3)、Mat的成员变量和成员函数都是public类型。
(4)、测试代码:
cv::Mat m1;
if (m1.data == nullptr)
{
std::cout << "无参构造: m1.data == nullptr" << std::endl;
}
输出: 无参构造: m1.data == nullptr
2、Mat有参构造对象并初始化
(1)、Mat(int rows, int cols, int type, const Scalar & s);
(2)、调用有参构造,会为对象成员变量(数据指针data)分配内存,并初始化值。
(3)、参数说明:
rows: 行数,即高。
cols: 列数,即宽。
type: 矩阵类型,如:CV_8UC1、CV_8UC3、CV_32FC3等。
s: 用于初始化每个像素的值。
(4)、测试代码: 有参构造对象并初始化(3行4列,每个像素3个通道,每个通道8位无符号整数,每个像素初始化值BRG = (1, 2, 3))
cv::Mat m2(3, 4, CV_8UC3, cv::Scalar(1, 2, 3));
std::cout << m2 << std::endl;
输出:
[ 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3;
1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3;
1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
3、zeros静态函数创建对象并初始化
(1)、static UMat zeros(int rows, int cols, int type);
(2)、返回一个指定大小和类型的零数组对象。
(3)、参数说明:
rows: 行数,即高。
cols: 列数,即宽。
type: 矩阵类型,如:CV_8UC1、CV_8UC3、CV_32FC3等。
(4)、测试代码: zeros静态函数创建对象并初始化(3行4列,每个像素3个通道,每个通道8位无符号整数, 每个像素每个通道值为0)
cv::Mat m3 = cv::Mat::zeros(3, 4, CV_8UC3);
std::cout << m3 << std::endl;
输出:
[ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
4、ones静态函数创建对象并初始化


965

被折叠的 条评论
为什么被折叠?



