0

C ++ APIを使用してOpenCVにKNN分類子を保存する簡単な方法はありますか?

CvKNearestクラスを別のクラスにラップした後、ここで説明するKNN分類器を保存しようとしました。

ディスクに正常に保存されますが、predictメソッドを実行して読み取ると、セグメンテーション違反(コアダンプ)エラーが発生します。

私のラッパークラスは次のとおりです。

class KNNWrapper
{
    CvKNearest knn;
    bool train(Mat& traindata, Mat& trainclasses)
    {

    }
    void test(Mat& testdata, Mat& testclasses)
    {

    }
}

BoostSerializationライブラリはより堅牢で安全だと聞きました。Boostライブラリでこれを実行できる適切なリソースを誰かに教えてもらえますか?

4

1 に答える 1

0

@tischは完全に正しいので、自分自身を修正したいと思います。CvKNearestは、CVStatModelのロードおよび保存関数をオーバーライドしません。

しかし、CvKNearestはモデルを計算しないため、保存する内部状態はありません。もちろん、cv::Mat合格したトレーニング データとテスト データを保存する必要があります。これにはFileStorageクラスを使用できます。優れた説明とチュートリアルが次の場所にあります。

OpenCV の他の統計モデルと同じ API を提供したい場合 (これは理にかなっています)、CvKNearestをサブクラス化し、保存と読み込みの機能を提供することを想定しています。 .

于 2012-06-28T05:46:51.903 に答える