我正在尝试使用 OpenCv 中的 PCA 类在我的 C++ 应用程序中执行主成分分析操作。我是 OpenCV 的新手,我遇到了问题,所以我希望有人能提供帮助。
当我使用 2*10 数据数组和参数时,我正在 Matlab 和 PCA 类上尝试一个演示示例来检查答案(CV_PCA_DATA_AS_COL)
,这里我有两个维度,所以我希望每个都有 2 个特征向量有 2 个元素,这和 Matlab 的结果一样好。
但是在使用 10*2 数据数组时(通常当样本数小于维数时),我得到 (2*10) 特征向量数组。即:10 个特征向量,每个特征向量有 2 个元素。这不是预期的,也不是 Matlab 给出的结果(Matlab 给出 10*10 的特征向量矩阵)。
我不知道为什么我会得到这些结果,因此我无法将数据投影到我的应用程序的主要组件上,有什么帮助吗?
PS:我使用的代码:
Mat Mean ;
Mat H(10, 2, CV_32F); // then the matrix is filled by data
PCA pca(H,Mean,CV_PCA_DATA_AS_COL,0) ;
pca.operator()(H,Mean,CV_PCA_DATA_AS_COL,0) ;
cout<<pca.eigenvectors.rows // gives 2 instead of 10
cout<<pca.eigenvectors.cols // gives 10