您的位置:首页 > 运维架构

构造函数方法创建Mat对象

2015-06-05 19:41 381 查看
Mat是一个非常优秀的图像类,它同时也是一个通用的矩阵类,可以用来创建和操作多维矩阵。Mat类提供了一系列构造函数,可以方便的根据需要创建Mat对象。

常用的构造函数有: 

1、Mat::Mat() 

无参数构造方法; 

2、Mat::Mat(int rows, int cols, int type) 

创建行数为 rows,列数为 col,类型为 type 的图像; 

3、Mat::Mat(Size size, int type) 

创建大小为 size,类型为 type 的图像; 

4、Mat::Mat(int rows, int cols, int type, const Scalar& s) 

创建行数为 rows,列数为 col,类型为 type 的图像,并将所有元素初始化为值 s; 

5、Mat::Mat(Size size, int type, const Scalar& s) 

创建大小为 size,类型为 type 的图像,并将所有元素初始化为值 s; 

6、Mat::Mat(const Mat& m) 

将m赋值给新创建的对象,此处不会对图像数据进行复制,m和新对象共用图像数据; 

7、Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP) 

创建行数为rows,列数为col,类型为type的图像,此构造函数不创建图像数据所需内存,而是直接使用data所指内存,图像的行步长由 step指定。 

8、Mat::Mat(Size size, int type, void* data, size_t step=AUTO_STEP) 

创建大小为size,类型为type的图像,此构造函数不创建图像数据所需内存,而是直接使用data所指内存,图像的行步长由step指定。 

9、Mat::Mat(const Mat& m, const Range& rowRange, const Range& colRange) 

创建的新图像为m的一部分,具体的范围由rowRange和colRange指定,此构造函数也不进行图像数据的复制操作,新图像与m共用图像数据; 

10、Mat::Mat(const Mat& m, const Rect& roi) 

创建的新图像为m的一部分,具体的范围roi指定,此构造函数也不进行图像数据的复制操作,新图像与m共用图像数据。

这些构造函数中,很多都涉及到类型type。type可以是CV_8UC1,CV_16SC1,…,CV_64FC4 等。里面的 8U 表示 8 位无符号整数,16S 表示 16 位有符号整数,64F表示 64 位浮点数(即 double 类型);C 后面的数表示通道数,例如 C1 表示一个

通道的图像,C4 表示 4 个通道的图像,以此类推。 

如果你需要更多的通道数,需要用宏 CV_8UC(n),例如: 
Mat M(3,2, CV_8UC(5));//创建行数为 3,列数为 2,通道数为 5 的图像
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv