Commit 7f6a981e180152bdedb27aebfdef499bf1dbd287

Authored by Josh Klontz
2 parents b340693e 60d5fdf7

Merge branch 'master' of https://github.com/biometrics/openbr

openbr/core/plot.cpp
... ... @@ -119,7 +119,7 @@ float Evaluate(const QString &simmat, const QString &mask, const QString &csv)
119 119 maskFile.set("rows", scores.rows);
120 120 maskFile.set("columns", scores.cols);
121 121 const Mat masks = BEE::readMask(maskFile);
122   - if (scores.size() != masks.size()) qFatal("Simmat/Mask size mismatch.");
  122 + if (scores.size() != masks.size()) qFatal("Simmat (%i,%i) / Mask (%i,%i) size mismatch.", scores.rows, scores.cols, masks.rows, masks.cols);
123 123  
124 124 return Evaluate(scores, masks, csv);
125 125 }
... ...
openbr/plugins/misc.cpp
... ... @@ -370,6 +370,40 @@ BR_REGISTER(Transform, AnonymizeTransform)
370 370  
371 371 /*!
372 372 * \ingroup transforms
  373 + * \brief Name a point
  374 + * \author Scott Klum \cite sklum
  375 + */
  376 +class ElicitMetadataTransform : public UntrainableMetaTransform
  377 +{
  378 + Q_OBJECT
  379 +
  380 + Q_PROPERTY(QStringList metadata READ get_metadata WRITE set_metadata RESET reset_metadata STORED false)
  381 + BR_PROPERTY(QStringList, metadata, QStringList())
  382 +
  383 + void init()
  384 + {
  385 + Globals->setProperty("parallelism", "0"); // Can only work in single threaded mode
  386 + }
  387 +
  388 + void project(const Template &src, Template &dst) const
  389 + {
  390 + dst = src;
  391 +
  392 + QTextStream stream(stdin);
  393 +
  394 + foreach (const QString &key, metadata) {
  395 + qDebug() << "Specify a value for key: " << key;
  396 + QStringList values = stream.readLine().split(",");
  397 + if (values.size() > 1) dst.file.set(key, values); // Used for lists (e.g. age range)
  398 + else dst.file.set(key,values[0]);
  399 + }
  400 + }
  401 +};
  402 +
  403 +BR_REGISTER(Transform, ElicitMetadataTransform)
  404 +
  405 +/*!
  406 + * \ingroup transforms
373 407 * \brief Change the br::Template::file extension
374 408 * \author Josh Klontz \cite jklontz
375 409 */
... ...
openbr/plugins/stasm.cpp
... ... @@ -22,7 +22,7 @@ class StasmInitializer : public Initializer
22 22 Globals->abbreviations.insert("RectFromStasmJaw","RectFromPoints([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],10)");
23 23 Globals->abbreviations.insert("RectFromStasmBrow","RectFromPoints([15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26],0.25,6.5)+Resize(44,230)");
24 24 Globals->abbreviations.insert("RectFromStasmNose","RectFromPoints([38, 39, 40, 41, 42, 43, 44, 67],0.1,1.5)+Resize(44,44)");
25   - Globals->abbreviations.insert("RectFromStasmMouth","RectFromPoints([48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66],0.3,3.0)+Resize(44,110)");
  25 + Globals->abbreviations.insert("RectFromStasmMouth","RectFromPoints([48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66],0.3,3.0)+Resize(26,68)");
26 26 }
27 27 };
28 28  
... ...
openbr/plugins/stream.cpp
... ... @@ -192,9 +192,10 @@ public:
192 192 aFrame->sequenceNumber = -1;
193 193  
194 194 bool res = getNext(*aFrame);
  195 +
  196 + // The datasource broke.
195 197 if (!res) {
196 198 allFrames.addItem(aFrame);
197   - // Datasource broke?
198 199 QMutexLocker lock(&last_frame_update);
199 200  
200 201 final_frame = last_issued;
... ... @@ -278,6 +279,7 @@ private:
278 279  
279 280 bool res = video.read(output.data.last().last());
280 281 if (!res) {
  282 + video.release();
281 283 return false;
282 284 }
283 285 output.data.last().file.set("FrameNumber", output.sequenceNumber);
... ... @@ -627,6 +629,9 @@ public:
627 629 dataSource.returnFrame(input);
628 630 input = NULL;
629 631  
  632 + if (!dataSource.isOpen())
  633 + return false;
  634 +
630 635 QReadLocker lock(&statusLock);
631 636 // Thread is already running, we should just return
632 637 if (currentStatus == STARTING)
... ...