我正在使用C++和kmeans算法对点进行聚类。聚类和每个点的绘制运行良好,我可以得到像这样的结果:
但是,我无法访问每个簇的中心位置(我想绘制它们)。如何在不自己计算的情况下获取中心位置?我以这种方式调用函数:
vector<Point2f> points;
...
// clustering
int K = 4; // number of clusters
Mat labels; // cluster each point belongs to
Mat centers; // center of each cluster
kmeans(points, K, labels, TermCriteria( TermCriteria::EPS+TermCriteria::COUNT, 50, 1.0), 3, KMEANS_PP_CENTERS, centers);
我用以下方式绘制它们:
for(unsigned int i = 0; i < points.size(); i++ ){
int clusterIdx = labels.at<int>(i);
Point ipt = points[i];
circle(cluster_image, ipt, 10, colorTab[clusterIdx], -1, 8);
}