Я работаю над фрагментом кода, который выполняет сопоставление функций со 128-ю дескрипторами.
Все дескрипторы для изображения хранятся в 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 :: Matrix элементами * double desc из каждого элемента вектора ip1? Вот что я попробовал:
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 :: Matrix, используя оператор [], таким образом, класс Matrix является мажорным.
Заранее спасибо,
Я не уверен, что внутри «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);
Других решений пока нет …