OpenCV 2.4.5: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::hieraricalClustering有无效的参数,并且该函数的两个候选函数都不满足。

有人能解释一下我是如何突然错误地调用这个方法的吗?

非常感谢您的帮助。

我自己解决了这个问题。

不接受:

cv::flann::KMeansIndexParams k_params

分层聚类功能实际上需要:

cvflann::KMeansIndexParams k_params

这是一个相当混乱的名称空间约定与OpenCV中的FLANN库,我只是忽略了编译器错误告诉我的名称空间差异

现在一切都正常了。KMeansIndexParams类型出现在两个名称空间中,我猜层次结构聚类方法从OpenCV 2.3到2.4.5略有变化。

相关内容

  • 没有找到相关文章

最新更新