【发布时间】:2017-05-25 17:17:58
【问题描述】:
我有一个 3xN Mat 数据,它保存在 yaml 文件中,看起来像:
%YAML:1.0
data1: !!opencv-matrix
rows: 50
cols: 3
dt: d
data: [ 7.1709999084472656e+01, -2.5729999542236328e+01,
-1.4074000549316406e+02, 7.1680000305175781e+01,
-2.5729999542236328e+01, -1.4075000000000000e+02,
7.1639999389648438e+01, -2.5729999542236328e+01,
-1.4075000000000000e+02, 7.1680000305175781e+01,
-2.5729999542236328e+01, -1.4075000000000000e+02, ...
我想将我的 3D 数据的维度减少到 1D 或更确切地说是 2D,然后在 QwtPlotCurve 上将其可视化。为了做到这一点,我在opencv下实现了pca函数,但不知道如何从pca结果中获取计算出的x和y坐标:
int numOfComponents= 100;
PCA pca(data, cv::Mat(), CV_PCA_DATA_AS_ROW, numOfComponents);
Mat mean= pca.mean.clone();
Mat eigenvalues= pca.eigenvalues.clone();
Mat eigenvectors= pca.eigenvectors.clone();
【问题讨论】:
-
按照here 的说明使用
Mat.at(int row, int col)。 -
你的意思是:
for(int i= 0; i<numOfComponents; ++i) { Mat feature= pca.project(data.row(i)) }或者我可以用pca.project(data, resultMat);投射新的暗淡吗?