3

画像分類には OpenCv を使用しています。トレーニング後、モデルを *.yaml.gz に保存しました。次に、このファイルを埋め込みリソースに追加しました。ここでリソースからモデルをロードする必要がありますが、OpenCv ではファイルまたは文字列からしかロードできません。

HMODULE ModuleHandle;

void LoadBinaryResource(int resId, void** data, int& size)
{
    HRSRC resource = ::FindResource(ModuleHandle, MAKEINTRESOURCE(resId), RT_RCDATA);
    HGLOBAL resourceData = ::LoadResource(ModuleHandle, resource);
    *data = ::LockResource(resourceData);
    size = ::SizeofResource(ModuleHandle, resource);
}


void LoadRTreesFromResource(int resId, cv::RTrees& forest)
{
    void* binaryData;
    int size;
    LoadBinaryResource(resId, &binaryData, size);

    // here I need to load CvStatModel from binaryData
}

ここで、データをファイルに書き込み、cv::RTres::load メソッドを使用する必要があります。

CvStatModel をメモリからロードする方法はありますか? または、メソッド cv::RTres::save および cv::RTres::load を使用せずにモデルをバイナリ形式にシリアライズ/デシリアライズするにはどうすればよいですか?

ありがとうございました!

4

1 に答える 1