如何在OpenCV中计算矩阵秩?
我在OpenCV中有一个非方矩阵。 我想计算它的等级。 我知道您需要进行SVD分解并计算行数,还是计算其中的一部分?不确定。。。 我真的可以使用OpenCV(C/C++)中的代码示例,因为我犯错误的空间太大了。。。 我发现了这条线 但它没有代码示例 因此,如果没有代码示例,也许您可以解释在OpenCV中查找非方矩阵秩的步骤?如前所述,您需要查找非零奇异值的数量。因此,首先通过奇异值分解找到奇异值,然后计算非零值的数量。您可能需要应用一个小阈值来解释数字错误:如何在OpenCV中计算矩阵秩?,opencv,matrix,rank,svd,Opencv,Matrix,Rank,Svd,我在OpenCV中有一个非方矩阵。 我想计算它的等级。 我知道您需要进行SVD分解并计算行数,还是计算其中的一部分?不确定。。。 我真的可以使用OpenCV(C/C++)中的代码示例,因为我犯错误的空间太大了。。。 我发现了这条线 但它没有代码示例 因此,如果没有代码示例,也许您可以解释在OpenCV中查找非方矩阵秩的步骤?如前所述,您需要查找非零奇异值的数量。因此,首先通过奇异值分解找到奇异值,然后计算非零值的数量。您可能需要应用一个小阈值来解释数字错误: #include <openc
#include <opencv2\opencv.hpp>
using namespace cv;
int main()
{
// Your matrix
Mat1d M = (Mat1d(4,5) << 1, 0, 0, 0, 2,
0, 0, 3, 0, 0,
0, 0, 0, 0, 0,
0, 2, 0, 0, 0);
// Compute SVD
Mat1d w, u, vt;
SVD::compute(M, w, u, vt);
// w is the matrix of singular values
// Find non zero singular values.
// Use a small threshold to account for numeric errors
Mat1b nonZeroSingularValues = w > 0.0001;
// Count the number of non zero
int rank = countNonZero(nonZeroSingularValues);
return 0;
}
#包括
使用名称空间cv;
int main()
{
//你的矩阵
Mat1d M=(Mat1d(4,5)0.0001;
//数一数非零的数字
int rank=countNonZero(非零值);
返回0;
}