2013-07-04 95 views
2

我最近开始将应用程序移植到运行OpenCV 2.4.5的新平台。OpenCV 2.4.5:FLANN和hierarchicalClustering

我使用OpenCV的FLANN实现层次聚类的代码的一部分不再编译。

的代码如下:

cv::Mat mergedFeatures = cvCreateMat(descriptorTotal, descriptorDims, CV_32F); 

int counter = 0; 
for (uint j = 0; j < ImageFeatures.size(); j++) { 
    cv::Mat features = ImageFeatures[j]; 
    for (int k = 0; k < features.rows; k++) { 
     cv::Mat roi = mergedFeatures.row(counter); 
     features.row(k).copyTo(roi); 
     counter++; 
    } 
} 

cv::Mat centers = cvCreateMat(1000, descriptorDims, CV_32FC1); 
cv::flann::KMeansIndexParams k_params = cv::flann::KMeansIndexParams(); 
cv::flann::AutotunedIndexParams atp = cv::flann::AutotunedIndexParams(); 
int numClusters = cv::flann::hierarchicalClustering<float, float>(mergedFeatures, centers, k_params); 

,我获得(在Eclipse)的错误是,CV :: FLANN :: hierarchicalClustering具有无效的参数和,无论是应聘此功能的满足。

有人可以解释我突然间怎么会错误地调用这个方法吗?

非常感谢您的帮助。

+0

您是否阅读过[documentation](http://docs.opencv.org/modules/flann/doc/flann_clustering.html#flann-hierarchicalclustering-distance)? – Aurelius

+0

当然我已阅读文档。无论如何,我已经解决了这个问题。 – user1022788

回答

3

我自己解决了这个问题。

除了接受的:

cv::flann::KMeansIndexParams k_params 

的hierarchicalClustering功能实际上需要:

cvflann::KMeansIndexParams k_params 

这是相当混乱的命名约定与在OpenCV中的FLANN库和我刚刚忽略的命名空间的区别编译器错误告诉我什么。

现在都在工作。 KMeansIndexParams类型存在于两个名称空间中,我猜想hierarchicalClustering方法从OpenCV 2.3稍微改变为2.4.5。

+0

您好,我正在尝试使用flann层次聚类,以便在基于flann的匹配中从多个检测到的对象创建聚类。我是OpenCV的新手,甚至在阅读文档时,我仍然无法完成集群。现在,我正在尝试为每个匹配的所有坐标(x,y)创建一个全白零点的Mat,并使用这些数据的层次聚类。这是正确的方法吗?提前致谢。 –