【发布时间】:2015-05-03 01:44:41
【问题描述】:
我正在尝试在一个数据集上运行 PCA,该数据集已从文件存储到 2D 矢量中,如下所示:
std::vector<std::vector<double> > tmpVec;
while(std::getline(file, numStream))
{
std::istringstream buffer(numStream);
std::vector<double> line((std::istream_iterator<double>(buffer)),
std::istream_iterator<double>());
tmpVec.push_back(line);
i++;
}
现在我需要对此运行 PCA,据我了解,我需要将其转换为 cv::Mat 类型。这是按如下方式完成的:
cv::Mat dst(row, col, CV_64F, &tmpVec);
然后我在其上运行 PCA:
cv::PCA pca(dst, cv::Mat(), CV_PCA_DATA_AS_ROW, 2);
当我在 PCA 计算后尝试在屏幕上打印出来时,我最终得到了垃圾值。 我只需要弄清楚如何在 2D 双向量上运行 PCA。 对此的任何帮助或指出我正确的方向都会很棒。 提前致谢。
【问题讨论】:
-
"(std::istream_iterator
(buffer)), std::istream_iterator ()" 看起来不一致。您是否打印了向量和矩阵中的值? -
是的,那里的代码运行良好。产生正确的输出。导致问题的是 pca 计算和转换为 cv::Mat。
-
只是说,std::vector 的地址不是第一个元素的地址...