2013-03-28 29 views
0

我正在處理一段執行128維描述符特徵匹配的代碼。將FLANN與單獨的*雙數組結合使用

圖像的所有描述符存儲在一個std :: vector中,其中InterestPoint包含一個成員* double desc,它是描述符向量。

現在我想用這種結構在弗萊恩矩陣以後做近似最近鄰特徵匹配,這是我初始化這樣:

std::vector<InterestPoint> ip1; 
//processing for building vector containing interest points 
flann::Matrix<double> input(new double[ip1.size()*128], ip1.size(), 128); 

我現在如何才能填補這一FLANN ::矩陣與*從ip1矢量的每個元素的雙desc成員?這是我試過的:

for(size_t i = 0; i < ip1.size(); i++) 
{ 
    for(size_t j = 0; j < 128; j++) 
    { 
     input[i][j] = ip1[i].ivec[j]; 
    } 
} 

編譯但沒有解決。 flann提供了一種使用operator []訪問flann :: Matrix的每一行的方法,因此Matrix類是主行。

由於提前,

+2

你能澄清一下「沒有解決」是什麼意思嗎?你是否嘗試過遍歷循環來檢查你正在訪問的索引處的ip1和input的值是否有效? – aardvarkk

+0

我做了你所說的,事實上,把我的指針放在Flann中並沒有問題,問題在於我的指針出於某種原因,在我調用的函數中無效。無論如何感謝您的時間! – filipsch

回答

0

我不知道 「InterestPoint」 裏面是什麼。 但我認爲這個示例代碼將有所幫助。

struct MyPoint 
{ 
    MyPoint (double x, double y, double z) {this->x=x; this->y=y; this->z=z;} 
    double x,y,z; 
}; 

std::vector<MyPoint> points; 
points.push_back(MyPoint(0, 0, 0)); 
points.push_back(MyPoint(1, 1, 1)); 
points.push_back(MyPoint(-1, -1, -1)); 
flann::Matrix<double> points_mat = flann::Matrix<double>(&points[0].x, points.size(), 3); 
+0

這個答案可能會從更多的評論中受益,看看發生了什麼。 – Sobrique