opencv第3讲--opencv中图像创建与赋值


1. C++中的Mat对象

Mat的数据结构

 2.代码:

void QuickDemo::mat_creation_demo(Mat& image)
{
	//创建方法--克隆
	Mat m1 = image.clone();  //深拷贝

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

	//赋值法
	Mat m3 = image;    //浅拷贝

	//创建空白图像
	Mat m4 = Mat::zeros(image.size(), image.type());     //根据输入图像的大小和通道数量创建数据
	Mat m5 = Mat::zeros(Size(8, 8), CV_8UC3);    //   无符号的8为的unsigned char 的三通道图像数据
	cout << m5 << endl;
	cout << m5.cols << endl;  //打印宽度
	cout << m5.rows << endl;  //打印高度
	cout << m5.channels() << endl;    //打印通道数量
	
	//创建初始数值全是1的一个数据图像,但是只能应用到单通道,多通道初始数据是1 0 0
	Mat m6 = Mat::ones(Size(8, 8), CV_8UC1);
	m6 = 127;        //数据编程了127 0 0...
	//如果想把多通道的数值都发生改变
	m6 = Scalar(127,127,127);  //全部数据变为127

	//Mat kernel = (Mat_(3, 3) <<
	//	0, -1, 0,
	//	-1, 5, -1,
	//	0, -1, 0);
}