mat:图像文件的内存数据对象
一.获取mat信息。
Mat src = imread("D:/software/opencv4.1.0/opencv/sources/samples/data/lena.jpg",IMREAD_ANYCOLOR);
int width = src.cols;
int height = src.rows;
int dim = src.channels();//通道数,1个的是灰色,3个是彩色,4个的还有一个是透明通道
int d = src.depth(); //图像深度
int t = src.type();
if(t==CV_8UC3)
printf("width:%d, height:%d, dim=%d dep=%d type=%d\n ", width, height, dim,d,t);
二.创建mat
Mat t1 = Mat(256, 256, CV_8UC3); //创建一个灰度图像,(宽,高,通道数)
//t1 = Mat(Size(256, 256), CV_8UC3);//和上面等价
t1 = Scalar(0,34,0);
//sclar 表示颜色赋值,由于上面让它为3通道,故而要给3个通道赋值
imshow("t1",t1);
Mat t2 = Mat::zeros(Size(256, 256), CV_8UC3); //天生黑色
imshow("t2",t2);
//赋值和克隆的区别
Mat t3 = src.clone();
t3 = Scalar(0, 0, 0);
imshow("after clone _src", src);
Mat t4 = src;
t4 = Scalar(0, 0, 0);//这时原图会改变
imshow("after assignment _src", src);
//创建和src大小完全一致的图
Mat t5 = Mat::zeros(src.size(), src.type());
三.遍历与访问像素值