Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在OpenCV中计算矩阵秩?_Opencv_Matrix_Rank_Svd - Fatal编程技术网

如何在OpenCV中计算矩阵秩?

如何在OpenCV中计算矩阵秩?,opencv,matrix,rank,svd,Opencv,Matrix,Rank,Svd,我在OpenCV中有一个非方矩阵。 我想计算它的等级。 我知道您需要进行SVD分解并计算行数,还是计算其中的一部分?不确定。。。 我真的可以使用OpenCV(C/C++)中的代码示例,因为我犯错误的空间太大了。。。 我发现了这条线 但它没有代码示例 因此,如果没有代码示例,也许您可以解释在OpenCV中查找非方矩阵秩的步骤?如前所述,您需要查找非零奇异值的数量。因此,首先通过奇异值分解找到奇异值,然后计算非零值的数量。您可能需要应用一个小阈值来解释数字错误: #include <openc

我在OpenCV中有一个非方矩阵。 我想计算它的等级。 我知道您需要进行SVD分解并计算行数,还是计算其中的一部分?不确定。。。 我真的可以使用OpenCV(C/C++)中的代码示例,因为我犯错误的空间太大了。。。 我发现了这条线

但它没有代码示例

因此,如果没有代码示例,也许您可以解释在OpenCV中查找非方矩阵秩的步骤?

如前所述,您需要查找非零奇异值的数量。因此,首先通过奇异值分解找到奇异值,然后计算非零值的数量。您可能需要应用一个小阈值来解释数字错误:

#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;
}