知识点
1.Mat的copy
Mat m2;
src.copyTo(m2);
2.Mat的赋值
Mat m3=src
创建空白图像
Mat m4=Mat::zeros(src.size().src.type())
Mat m5=Mat::zeros(src.size(512,512).CV_8uc3)
Mat m6=Mat::zeros(src.size().CV_8uc3)
Mat kemel =(Mat_<char>(3,3)<<)矩阵
代码
首先在头文件中加载新的demo
之后在源文件中添加要学习的参数
void QUickdemo::mat_creation_demo(Mat& image)
{
Mat m1, m2;
//m1 = image.clone();
//image.copyTo(m2);
//创建空白图像
Mat m3 = Mat::ones(Size(8,8), CV_8SC1);--cv_8sc1无符号八位单通道数据,规格是8X8,从0开始到7如图1若改成8sc3则变为8行24列。s代表整形c1代表单通道,8代表8位深度,深度决定图像的质量8,16,32,64.
std::cout << m3 << std::endl;
}
展示空白图片的长度和宽度
std::cout << " width: " << m3.cols << " height " << m3.rows <<m3.channels<< std:end--其中channels没有在程序中体现,代表着通道数量,这样会出现一个问题就是更改通道数量就会只有第一列的值被改变了,如图
当知道通道数是可以用Scalar指令来更改
m3=Scalar(127,127,127);
根据scalar可以改变所选的窗口颜色
下面代码是关于覆盖
Mat m4 = m3;
m4 = Scalar(255, 0, 0);
imshow("123", m3);
输出的将会是更改后的m4的代码
下面是克隆代码
将会输出两个颜色的代码
Mat m4 = m3.clone();
m4 = Scalar(255, 0, 0);
imshow("123", m3);
imshow("124", m4);
下面是复制代码
Mat m4;
m3.copyTo(m4);
m4 = Scalar(255, 0, 0);
imshow("123", m3);
imshow("124", m4);
更改M3的值不会影响m4