Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
opencv中使用flann的分层聚类_Opencv_Hierarchical Clustering - Fatal编程技术网

opencv中使用flann的分层聚类

opencv中使用flann的分层聚类,opencv,hierarchical-clustering,Opencv,Hierarchical Clustering,我试图使用opencv 2.4.2中的HierarchycalClustering方法 它工作正常,但问题是,我不理解它接受的参数,例如分支 我认为我的问题在于我总是只得到一个集群 我的输入是LBPH特征的cv::Mat(用于人脸检测)行数为12,列数为6272。 不管分支因子的值是多少,我总是得到一个簇,它的质心是来自输入矩阵grouppeed_one_ferson_特征的行的平均值。 你能给我一些建议吗 非常感谢 代码如下: cv::Mat groupped_one_person_featu

我试图使用opencv 2.4.2中的HierarchycalClustering方法

它工作正常,但问题是,我不理解它接受的参数,例如分支

我认为我的问题在于我总是只得到一个集群

我的输入是LBPH特征的cv::Mat(用于人脸检测)行数为12,列数为6272。 不管分支因子的值是多少,我总是得到一个簇,它的质心是来自输入矩阵grouppeed_one_ferson_特征的行的平均值。 你能给我一些建议吗

非常感谢

代码如下:

cv::Mat groupped_one_person_features;  
.... // fill grouppeed_one_ferson_features with data 
int  Nclusters=50;
cv::Mat centroids (Nclusters,Features.data[0][0].cols,CV_32FC1);
int count = cv::flann::hierarchicalClustering<cvflann::L1<float>>groupped_one_person_features,centroids,cvflann::KMeansIndexParams(2000,11,cvflann::FLANN_CENTERS_KMEANSPP));
cv::Mat-groupped\u-one\u-person\u功能;
.... // 用数据填充grouppeed_one_ferson_功能
int Nclusters=50;
cv::Mat质心(Nclusters,Features.data[0][0].cols,cv_32FC1);
int count=cv::flann::hierarchicalClusteringgroupped_one_person_特征、质心、cvflann::KMeansIndexParams(2000,11,cvflann::flann_CENTERS_KMEANSPP));

首先,您在最后一行中遗漏了一个括号:

int count = cv::flann::hierarchicalClustering<cvflann::L1<float>>(groupped_one_person_features,centroids,cvflann::KMeansIndexParams(2000,11,cvflann::FLANN_CENTERS_KMEANSPP));
int count=cv::flann::hierarchicalClustering(分组一人特征、质心、cvflann::KMeansIndexParams(2000,11,cvflann::flann_CENTERS_KMEANSPP));
按照顺序,参数为(根据
flann_base.hpp
):

  • 要聚集的点
  • 计算出的聚类中心。矩阵应预先分配并居中。行是请求的群集数
  • 聚类参数
  • 用于聚类的距离
因此,如果总是得到一个簇,这可能意味着
质心矩阵只有一行。你能核实一下吗

KMeansIndexParams
的参数是(根据
kmeans\u index.h
):

  • 分支因子:树中节点的子节点数
  • 迭代次数:在一个kmeans集群(kmeans树)中执行的最大迭代次数
  • centers\u init:用于为kmeans树拾取初始群集中心的算法
  • cb_指数:集群边界指数。搜索kmeans树时使用

可以从文档中轻松阅读参数的含义。你是否真的知道这些参数的含义,即改变它们会导致什么样的行为?