0

我正在编写一段代码,该代码执行与 128 维描述符的特征匹配。

图像的所有描述符都存储在 std::vector 中,其中 InterestPoint 包含一个成员 *double desc,它是描述符向量。

现在我想在 Flann 矩阵中使用这个结构来稍后进行近似最近邻特征匹配,我将其初始化为:

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

我现在如何用来自 ip1 向量的每个元素的 *double desc 成员填充这个 flann::Matrix ?这是我尝试过的:

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 提供了一种访问 flann::Matrix 每一行的方法,使用运算符 [],因此 Matrix 类是行主要的。

提前致谢,

4

1 回答 1

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);
于 2015-02-19T08:40:05.067 回答