画像分類には 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 を使用せずにモデルをバイナリ形式にシリアライズ/デシリアライズするにはどうすればよいですか?
ありがとうございました!