显示创建Mat对象的七种方法

来源:互联网 发布:中科大软件学院考研 编辑:程序博客网 时间:2024/04/28 11:16

Mat不但是一个非常有用的图像容器类,同时也是一个通用的矩阵类,创建一个Mat对象有多种方法,先列举如下:

1.使用Mat()构造函数

Mat M(2,2,CV_8UC3,Scalar(0,0,255));
对于二维多通道图像,首先要定义其尺寸,即行数和列数,然后,需要指定存储元素的数据类型以及每个矩阵点的通道数。为此依据下面的规则有多种定义:CV_[The number of bits per item][Signed or Unsigned][Type Prefix]C[The channel number]即:CV_[位数][带符号与否][类型前缀]C[通道数]

2.在C/C++中通过构造函数进行初始化

int sz[3] = {2,2,2};Mat L(3,sz,CV_8UC,Scalar::all(0));
上面的例子演示了一个超过两维的矩阵:指定维数,然后传递一个指向一个数组的指针,这个数组包含每个维度的尺寸;后续的两个参数与方法一中的相同。

3.为已存在的IplImage指针创建信息头
示例代码如下:

IplImage *img = cvLoadImage(“1.jpg”,1);
Mat mtx(img);

  1. 利用Create()函数
    示例代码如下:

M.Create(4,4,CV_8UV(2));

5.采用Matlab的初始化方式

zeros(),ones(0,eyes();

Mat e = Mat::eyes(4,4,CV_64F);Mat o = Mat::ones(2,2,CV_32F);Mat z = Mat::zeros(3,3,CV_8UC1);

6.对小矩阵使用逗号分隔式初始化函数
示例代码如下:

Mat c = (Mat_<double>(3,3)<< 0,1,2,3,-1,-1,2,3,5);

7.为已存在的对象创建新信息头
方法七使用成员函数clone()或者copyTo为一个已存在的Mat对象创建一个新的信息头,示例代码如下:

Mat Row = C.row(1).clone();
0 0
原创粉丝点击