Mat 类构造函数参数列表
参数 | 含义 |
---|---|
ndims | 数组的维数 |
rows | 2维数组的行数 |
cols | 2维数组的列数 |
size | 2维数组的尺寸Size(cols,rows).在Size)构造函数中行数和列数在顺序上为反转过来的 |
sizes | 指定n维数组形状的整数数组 |
type | 数组的类型。使用CV8UC1,.…,创建1-4通道的矩阵,CV_64FC4或CV8UC(n),……,CV_64FC(n)可以创建多通道(高达CV_MAX_CN通道)矩阵 |
s | 一个可选的初始化每个矩阵元素的参数。要在矩阵建成后将所有元素设置为特定值可以用Mat的赋值运算符Mat:operator=(constScala&value) |
data | 指向用户数据的指针。矩阵构造函数传入data和step参数不分配矩阵数据。相反,它们只是初始化矩阵头指向指定的数据,这意味着没有数据的复制。此操作是很高效的,可以用来处理使用OpenCV函数的外部数据。外部数据不会自动释放,所以你应该小心处理它。step-每个矩阵行占用的字节数。如果任何值应包括每行末尾的填充字节。如果缺少此参数(设置为AUTOSTEP),假定没有填充和实际的步长用cols*elemSize0计算。请参阅Mat::elemSize() |
steps | 多维数组(最后一步始终设置为元素大小)的情况下的ndims-1个步长的数组。如果没有指定的话,该矩阵假定为连续 |
M | 分配给构造出来的矩阵的阵列(作为一个整体或部分)。这些构造函数没有复制数据。相反,指向m的数据或它的子数组的头被构造并被关联到m上。引用计数器中无论如何都将递增。所以,当您修改矩阵的时候,自然而然就使用了这种构造函数,您还修改m中的对应元素。如果你想要独立的子数组的副本,请使用Mat:clone() |
img | 指向老版本的lplmage图像结构的指针。默认情况下,原始图像和新矩阵之间共享数据。但当copyData被设置时,完整的图像数据副本就创建起来了 |
vec | 矩阵的元素构成的STL向量。矩阵可以取出单独一列并且该列上的行数和矢量元素的数目相同。矩阵的类型匹配的向量元素的类型。构造函数可以处理任意的有正确声明的DataType类型。这意味着矢量元素不支持的混合型结构,它们必须是数据(numbers)原始数字或单型数值元组。对应的构造函数是显式的。由于STL向量不会自动转换为Mat 实例,您应显式编写Mat(vec)。除非您将数据复制到矩阵(copyData=true),没有新的元素被添加到向量中,因为这样可能会造成矢量数据重新分配,并且因此使得矩阵的数据指针无效 |
copyData | 指定STL向量或旧型CvMat 或lpllmage是应复制到(true)新构造的矩阵中还是(false)与之共享基础数据的标志,复制数据时,使用Mat引用计数机制管理所分配的缓冲区。虽然数据共享的引用计数为NULL,但是分配数据必须在矩阵被析构之后才可以释放 |
rowRange | 矩阵阵列m之行数的取值范围。另外,可以使用Range:all()来取所有的行 |
colRange | M列数的取值范围。使用Range:all()来取所有的列 |
ranges | 表示M沿每个维度选定的区域的数组 |
expr | 矩阵表达式。具体请参见上文“矩阵表达式”一节的内容 |
Mat类成员函数
Mat类成员函数 | 作用 |
---|---|
Mat::operator = | 提供矩阵赋值操作 |
Mat::row | 创建一个指定行数的矩阵头 |
Mat::col | 创建一个指定列数的矩阵头 |
Mat::rowRange | 创建指定行跨度(span)的矩阵头 |
Mat::colRange | 创建指定列跨度的矩阵头 |
Mat::diag | 提取或创建矩阵对角线 |
Mat::clone | 创建一个数组及其基础数据的完整副本 |
Mat::copyTo | 把矩阵复制到另一个矩阵中 |
Mat::convertTo | 在缩放或不缩放的情况下转换为另一种数据类型 |
Mat::asignTo | 提供了一种convertTo的功能形式 |
Mat::setTo | 将阵列中所有的或部分的元素设置为指定的值 |
Mat::reshape | 在无需复制数据的前提下改变2D矩阵的形状和通道数或其中之一 |
Mat::t | 通过矩阵表达式(matrix expression)实现矩阵的转置 |
Mat::inv | 反转矩阵 |
Mat:mul | 执行两个矩阵按元素相乘或这两个矩阵的除法 |
Mat::cross | 计算3元素向量的一个叉乘积 |
Mat::dot | 计算两向量的点乘 |
Mat::zeros | 返回指定的大小和类型的零数组 |
Mat::ones | 返回一个指定的大小和类型的全为1的数组 |
Mat::eye | 返回一个恒等指定大小和类型矩阵 |
Mat::create | 分配新的阵列数据 |
Mat:addref | 计数器参考 |
Mat::release | 在必要的情况下,递减引用计数并释放该矩阵 |
Mat::resize | 更改矩阵的行数 |
Mat::reserve | 保留一定数量的行空间 |
Mat::push_back | 将元素添加到矩阵的底部 |
Mat::pop_back | 从底部的列表中删除元素 |
Mat::locateROI | 父矩阵内定位矩阵头 |
Mat::adjustROl | 调整子阵大小及其在父矩阵中的位置 |
Mat::operator() | 提取矩形子阵 |
Mat::operator CvMat | 创建矩阵CvMat头 |
Mat::operator Ipllmage | 创建Ipllmage矩阵头 |
Mat::isContinuous | 返回矩阵是否连续 |
Mat::elemSize | 返回矩阵元素大小(以字节为单位) |
Mat::type | 返回一个矩阵元素的类型 |
Mat::depth | 返回一个矩阵元素的深度 |
Mat::channels | 返回矩阵通道的数目 |
Mat::stepl | 返回矩阵归一化的一步 |
Mat::size | 返回一个矩阵大小 |
Mat::empty | 如果数组中没有元素,则返回true |
Mat::at | 返回对指定数组元素的引用 |
Mat::begin | 返回矩阵迭代器,并将其设置为第一个矩阵元素 |
Mat::end | 返回矩阵迭代器,并将其设置在最后一个元素之后(after-last) |
Mat::ptr | 返回指定矩阵行的指针 |