如何使用opencv flann :: KMeansIndex在训练后量化新数据

时间:2012-10-31 11:43:58

标签: opencv indexing hierarchy k-means

我想使用Opencv cv :: flann :: KmeansIndex来构建一个分层的k-means树来进行聚类。 做完后

typedef cv::flann::L2<float> Distance;
int featureNum =1000000;
int dim =2;
float *data = new float[featureNum*dim]; 
for(int i=0;i<1000000;++i)
{   
    data[i*2]=(float)(rand()%255);
    data[i*2+1]=(float)(rand()%255);
}

cvflann::Matrix<Distance::ElementType> features(data,featureNum,dim);
float *center = new float[10000*2];
flann::Matrix<float> centers(center,10000,2);
cvflann::KMeansIndexParams indexParams(10,1);
int n = cvflann::hierarchicalClustering<Distance>(features,centers,indexParams);
cout<<n<<endl;

2D点被聚类成10 ^ 4个类别。

但是如果出现了一个新数据,我怎么知道它属于哪个类别呢? 我认为cv :: flann :: KmeansIndex可能会有所帮助。

这样做之后:

KMeansIndex<Distance> kmeans(features, indexParam, d);
kmeans.buildIndex();

建立了索引。

但是

如何使用KmeansIndex量化新数据点?

0 个答案:

没有答案