引言
Mat类是OpenCV中最重要的几个类之一,与之对应的,它的创建的方式也是十分的多样,这里笔者为了以后自己使用方便,于是把这几种方法都列出来,希望能对你有帮助。
创建方式
1、使用Mat构造函数
比较常用的有:
Mat image(int rows,int cols,int type,const Scalar&s);
其中row和col是表示定义的image的行和列,type则是表示图像的类型,一般来说有cv_8uc3等等,这里的类型一般来说表达的含义如下:
最后一个参数则是image的颜色,通常遵循BGR原则。
2、c/c++构造函数
与第一种方法差不多,但是可以用来创建超过二维的矩阵。
首先定义一个数组,存储这矩阵每一维度的大小。
int sz[dims]={a,b,c};
Mat image(int dims,int *sz.int type,const Scalar&s);
这里的第一个参数是指这个矩阵的维度,第二个参数是一个指向包含各维度大小的数组的指针。后面两个参数与第一个方法中的含义相同
3、为已经存在的lpIImage创建信息头
IplImageimage=cvLoadImage(“1.jpg”);
Mat max(image);
这里的IplImage是在OpenCV2中的图像数据结构,后来OpenCV3出来后,mat逐步讲IPLImage取代,上面两句代码是将IplImage的强制转换成Mat类型。
4、利用create函数
M.create(int rows,int cols,int types);
或者 M.create(int dims,int *sz,int types);
需要注意的是,create函数不能为矩阵设初值,只能在改变尺寸时出现为矩阵开辟内存。
5、利用与MATLAB相似的方法
利用zeros,eye,ones等函数,创建矩阵,这三种的创建方法类似,都是(int rows,int cols,int types)
6、创建小矩阵
7、利用成员函数clone和copyto为一个已经存在的Mat对象创建信息头
Mat rowclone = c.row(1).clone();