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);

この flann::Matrix を ip1 ベクトルのすべての要素の *double 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 は、演算子 [] を使用して、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 に答える