2013-07-04 89 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,並使用這些數據的層次聚類。這是正確的方法嗎?提前致謝。 –