Mat::assignTo
提供了一个convertTo的功能形式。
C++: void Mat::assignTo(Mat& m, int type=-1 ) const
Parameters
m– 目标阵列。
type– 要求是目标阵列depth或-1(如果阵列的类型和源矩阵类型相同)
这是一个 internally 使用的由 Matrix Expressions引擎调用的方法。
Mat::setTo
将阵列中所有的或部分的元素设置为指定的值。
C++: Mat& Mat::setTo(const Scalar& s, InputArray mask=noArray())
参数:
s– 把标量赋给阵列并转化到阵列的实际类型。
mask– 与 *this尺寸相同的操作掩码。这是Mat::operator=(const Scalar& s)运算符的一个高级变量。
Mat::reshape
在无需复制数据的前提下改变2D矩阵的形状和通道数或其中之一。
C++: Mat Mat::reshape(int cn, int rows=0) const
参数:
cn– 新的通道数。若cn=0,那么通道数就保持不变。
rows–新的行数。 若rows = 0, 那么行数保持不变。
该方法为*this元素创建新的矩阵头。这新的矩阵头尺寸和通道数或其中之一发生改变,在以下的情况任意组合都是有可能的:
ü 新的矩阵没有新增或减少元素。通常,rows*cols*channels()在转换过程中保持一致。.
ü 无数据的复制。也就是说,这是一个复杂度为 O(1)的操作。通常,如果该操作改变行数或透过其他方式改变元素行索引,那么矩阵必定是连续的。参见Mat::isContinuous()。
例如,有一存储了STL向量的三维点集,你想用3xN的矩阵来完成下面的操作:
std::vector<Point3f> vec;
...
Mat pointMat = Mat(vec). //把向量转化成Mat, 复杂度为O(1)的运算
reshape(1). // 从Nx1的3通道矩阵得出Nx3 的单通道矩阵
//同样是复杂度为O(1)的运算
t(); // 最后转置Nx3 的矩阵
//这个过程要复制所有的元素
Mat::t
转置矩阵。.
C++: MatExpr Mat::t() const
该方法通过矩阵表达式(matrix expression)实现矩阵的转置The method performs matrix transposition by means of matrix expressions. 它并未真正完成了转置但却返回一个临时的可以进一步用在更复杂的矩阵表达式中或赋给一个矩阵的转置矩阵对象:
Mat A1 = A + Mat::eye(A.size(), A.type)*lambda;
Mat C = A1.t()*A1; //计算(A + lambda*I)^t * (A + lamda*I).
Mat::inv
反转矩阵
C++: MatExpr Mat::inv(int method=DECOMP_LU) const
参数:
method– 反转矩阵的方法。有以下几种可能的值:
– DECOMP_LU是 LU 分解一定不能是单数的。
– DECOMP_CHOLESKY 是 Cholesky LLT只适用于对称正矩阵的分解。该类型在处理大的矩阵时的速度是LU的两倍左右。
– DECOMP_SVD是 SVD 分解。如果矩阵是单数或甚至不是2维,函数就会计算伪反转矩阵。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-65348-7.html
傻帽真的变亲妈呀
小米壮哉@小米公司@红米手机
前提是这些男性必须提升自己的颜值和身材