003 图像对象的创建与赋值Mat对象

Mat对象

头部:属性,大小、宽高、字节类型、通道数……

数据部分:像素值的集合

//创建方法-克隆
Mat m1 = src.clone()		//深拷贝

//复制
Mat m2;
src.copyTo(m2);				//深拷贝

//赋值法
Mat m3 = src;				//浅拷贝,修改src相当于修改m3
void QuickDemo::mat_creation_demo(Mat& image)
{
	Mat m1, m2;
	m1 = image.clone();
	image.copyTo(m2);

	//创建空白图像
	Mat m3 = Mat::zeros(Size(100, 100), CV_8UC3);	//8位,unsigned channel,单/3通道。图像在mat真正宽度是通道数×宽度
	//Mat m3 = Mat::ones(Size(8, 8), CV_8UC3);		//初始化方法,单通道全为1,三通道只有每个像素起始点为1(每个像素第一通道)
	m3 = 127;										//每个像素第一通道为1
	m3 = Scalar(255, 0, 0);							//每个通道都是127
	std::cout << "width: " << m3.cols << " height: " << m3.rows << " channels: " << m3.channels() << std::endl;	//输出长宽、通道数
	std::cout << m3 << std::endl;

	/*Mat m4 = m3;				//浅拷贝
	m4 = Scalar(0, 255, 255);
	imshow("m3", m3);*/

	Mat m4 = m3.clone();		//深拷贝,或者m3.copyTo(m4)
	m4 = Scalar(0, 255, 255);
	imshow("m3", m3);
	imshow("m4", m4);

}

Mat m = Mat::ones(2, 2, CV_8UC3); 相当于:Mat m = Mat(2, 2, CV_8UC3, 1);

OpenCV replaces 1 with Scalar(1,0,0)相当于每个像素的第一个通道为1,其余两个通道为0;

Mat::zeros() Mat m = Mat::zeros(2, 2, CV_8UC3);

相当于创建一张黑色的图,每个像素的每个通道都为0,Scalar(0,0,0);

Scalar();

使用方法借鉴链接:https://blog.csdn.net/wangpailiulanqi8/article/details/120161666?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166614244416782417079723%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166614244416782417079723&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blogallsobaiduend~default-1-120161666-null-null.1v59opensearch_v2,2v3add_ask&utm_term=scalar%28%29&spm=1018.2226.3001.4187

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可可西里啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值