Commit 5e7bdfebf569b9d12fbc368e15861c5185d3be6c

Authored by Josh Klontz
1 parent 51d9a854

load a stat model from memory without creating a temporary file

Showing 1 changed file with 5 additions and 9 deletions
openbr/core/opencvutils.cpp
... ... @@ -302,18 +302,14 @@ void OpenCVUtils::storeModel(const cv::Algorithm &model, QDataStream &stream)
302 302  
303 303 void OpenCVUtils::loadModel(CvStatModel &model, QDataStream &stream)
304 304 {
305   - // Copy local file contents from stream
  305 + // Copy file contents from stream
306 306 QByteArray data;
307 307 stream >> data;
308 308  
309   - // Create local file
310   - QTemporaryFile tempFile(QDir::tempPath()+"/model");
311   - tempFile.open();
312   - tempFile.write(data);
313   - tempFile.close();
314   -
315   - // Load MLP from local file
316   - model.load(qPrintable(tempFile.fileName()));
  309 + // This code for reading a file from memory inspired by CvStatModel::load implementation
  310 + CvFileStorage *fs = cvOpenFileStorage(data.data(), 0, CV_STORAGE_READ | CV_STORAGE_MEMORY);
  311 + model.read(fs, (CvFileNode*) cvGetSeqElem(cvGetRootFileNode(fs)->data.seq, 0));
  312 + cvReleaseFileStorage(&fs);
317 313 }
318 314  
319 315 void OpenCVUtils::loadModel(cv::Algorithm &model, QDataStream &stream)
... ...