OpenCV 2.4.5:FLANN和hierarchicalClustering

时间:2013-07-04 01:06:38

标签: opencv hierarchical-clustering flann

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

我的部分代码使用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具有无效的参数,并且没有满足此函数的候选者。

有人可以解释我突然之间似乎错误地调用了这种方法吗?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

我自己解决了这个问题。

而不是接受:

cv::flann::KMeansIndexParams k_params

hierarchicalClustering函数实际需要:

cvflann::KMeansIndexParams k_params

与OpenCV中的FLANN库相比,这是一个令人困惑的命名空间约定,我只是忽略了编译器错误告诉我的命名空间差异。

现在一切正常。 KMeansIndexParams类型存在于两个名称空间中,我猜想hierarchicalClustering方法从OpenCV 2.3略微改变为2.4.5。