我正在使用带有点云的 flann 库。我有这个适配器方法可以将我自己的点转换为 flann 可用的点
flann::Matrix<float> * converterFlann::convertArray(vector<Point *> *P){
float points[P->size()*3];
int j = 0;
for (int i = 0; i<P->size(); i++){
points[j] = P->at(i)->getX(); j++;
points[j] = P->at(i)->getY(); j++;
points[j] = P->at(i)->getZ(); j++;
}
P->at(0)->print();
cout << points[0] << " " << points[1] << " " << points[2] << endl;
flann::Matrix<float> *nari = new flann::Matrix<float>(points, P->size(), 3);
cout << *nari[0][0] << " " << *nari[0][1] << " " << *nari[0][2] << endl;
return nari;
}
这个方法的输出是
Printing my point: (-0.06325, 0.0359793, 0.0420873) Index: 0
Printing from points array: -0.06325 0.0359793 0.0420873
Printing from flann: -0.06325 -0.06275 -0.0645
我不明白为什么从 flann::Matrix、Y 和 Z 打印是不同的。我一直在寻找一些关于 flann::Matrix 存储过程的文档,但我找不到任何答案。我认为我的数组类型访问是正确的,但它不起作用。
提前致谢。:D