#include<iostream>#include<opencv2/opencv.hpp>usingnamespace std;usingnamespace cv;intmain(){//定义一个3*3的矩阵afloat b[]={1,2,3,4,5,6,7,8,9};
Mat a =Mat(3,3, CV_32FC1, b);
Mat w, u, vt;//svd分解 a:要分解的 w:奇异矩阵 u,vt:分解矩阵 其中vt表示v的转置矩阵//输入,MODIFY_A是指允许计算函数可以修改待分解的矩阵,官方文档上说这样可以加快计算速度、节省内存//FULL_UV=把U和VT补充成单位正交方阵SVDecomp(a, w, u, vt, SVD::MODIFY_A | cv::SVD::FULL_UV);
cout << w << endl;
cout << u << endl;
cout << vt << endl;//把vt第三行的值 转化成三行。。。。 也就是v的第三列 转化为三行
Mat c = vt.row(2).reshape(1,3);
cout << c << endl;}''''''''''''''''[16.848103;1.0683696;1.1560786e-08][0.21483724,0.88723063,-0.40824836;0.52058733,0.24964403,0.81649655;0.82633752,-0.38794285,-0.40824822][0.47967118,0.57236779,0.66506433;-0.77669102,-0.075686522,0.62531805;0.40824828,-0.81649655,0.40824825][0.40824828;-0.81649655;0.40824825]