void MTT::doPCA(RoadGraph* roads, PCA& pca) { // 頂点データを使って行列を生成する cv::Mat vmat = cv::Mat(GraphUtil::getNumVertices(roads), 2, CV_64FC1); int count = 0; RoadVertexIter vi, vend; for (boost::tie(vi, vend) = boost::vertices(roads->graph); vi != vend; ++vi) { if (!roads->graph[*vi]->valid) continue; vmat.at<double>(count, 0) = roads->graph[*vi]->getPt().x(); vmat.at<double>(count, 1) = roads->graph[*vi]->getPt().y(); count++; } // PCAを実施 pca.pca(vmat, false); }