From 5e7bdfebf569b9d12fbc368e15861c5185d3be6c Mon Sep 17 00:00:00 2001 From: Josh Klontz Date: Wed, 17 May 2017 11:29:33 -0600 Subject: [PATCH] load a stat model from memory without creating a temporary file --- openbr/core/opencvutils.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/openbr/core/opencvutils.cpp b/openbr/core/opencvutils.cpp index 3d2e31d..aea7a7c 100644 --- a/openbr/core/opencvutils.cpp +++ b/openbr/core/opencvutils.cpp @@ -302,18 +302,14 @@ void OpenCVUtils::storeModel(const cv::Algorithm &model, QDataStream &stream) void OpenCVUtils::loadModel(CvStatModel &model, QDataStream &stream) { - // Copy local file contents from stream + // Copy file contents from stream QByteArray data; stream >> data; - // Create local file - QTemporaryFile tempFile(QDir::tempPath()+"/model"); - tempFile.open(); - tempFile.write(data); - tempFile.close(); - - // Load MLP from local file - model.load(qPrintable(tempFile.fileName())); + // This code for reading a file from memory inspired by CvStatModel::load implementation + CvFileStorage *fs = cvOpenFileStorage(data.data(), 0, CV_STORAGE_READ | CV_STORAGE_MEMORY); + model.read(fs, (CvFileNode*) cvGetSeqElem(cvGetRootFileNode(fs)->data.seq, 0)); + cvReleaseFileStorage(&fs); } void OpenCVUtils::loadModel(cv::Algorithm &model, QDataStream &stream) -- libgit2 0.21.4