显式创建Mat矩阵的七种方法
1.使用Mat()构造方法创建
//参数:行数,列数,数据类型及通道数,每块的数据 //数据类型及通道数:CV_[位数][是否有符号][数据类型]C[通道数] Mat m(288,288,CV_8UC3,Scalar(0,0,255));
2.多维度的使用Mat()构造方法创建
//创建三维的矩阵,设置每个维度的尺寸 int s[3]={2,2,2}; Mat m1(3,s,CV_8UC3,Scalar(0,0,255));
3.create函数创建
Mat m2; m2.create(2,2,CV_8UC(2));
4.创建特殊矩阵
//创建单位阵 Mat E = Mat::eye(2,2,CV_16F); cout<<E<<endl; //创建零矩阵 Mat Z = Mat::zeros(2,2,CV_16F); cout<<Z<<endl; //创建一矩阵 Mat O = Mat::ones(2,2,CV_16F); cout<<O<<endl;
5.模板创建矩阵
Mat C = (Mat_<double>(2,2)<<1,0,0,1); cout<<C<<endl;
6.使用clone()或者copyTo()创建
Mat C = (Mat_<double>(2,2)<<1,0,0,1); cout<<C<<endl; Mat D=C.clone(); Mat E; D.copyTo(E); cout<<E<<endl;
7.使用IplImage对象创建再转换成Mat矩阵
//opencv2.x.x和opencv3.x.x支持,opencv4.x.x不支持 IplImage* img = cvLoadImage(fileName,flag) Mat G = mtx(img) cout<<G<<endl;