Commit 7f6a981e180152bdedb27aebfdef499bf1dbd287
Merge branch 'master' of https://github.com/biometrics/openbr
Showing
4 changed files
with
42 additions
and
3 deletions
openbr/core/plot.cpp
| @@ -119,7 +119,7 @@ float Evaluate(const QString &simmat, const QString &mask, const QString &csv) | @@ -119,7 +119,7 @@ float Evaluate(const QString &simmat, const QString &mask, const QString &csv) | ||
| 119 | maskFile.set("rows", scores.rows); | 119 | maskFile.set("rows", scores.rows); |
| 120 | maskFile.set("columns", scores.cols); | 120 | maskFile.set("columns", scores.cols); |
| 121 | const Mat masks = BEE::readMask(maskFile); | 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 | return Evaluate(scores, masks, csv); | 124 | return Evaluate(scores, masks, csv); |
| 125 | } | 125 | } |
openbr/plugins/misc.cpp
| @@ -370,6 +370,40 @@ BR_REGISTER(Transform, AnonymizeTransform) | @@ -370,6 +370,40 @@ BR_REGISTER(Transform, AnonymizeTransform) | ||
| 370 | 370 | ||
| 371 | /*! | 371 | /*! |
| 372 | * \ingroup transforms | 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 | * \brief Change the br::Template::file extension | 407 | * \brief Change the br::Template::file extension |
| 374 | * \author Josh Klontz \cite jklontz | 408 | * \author Josh Klontz \cite jklontz |
| 375 | */ | 409 | */ |
openbr/plugins/stasm.cpp
| @@ -22,7 +22,7 @@ class StasmInitializer : public Initializer | @@ -22,7 +22,7 @@ class StasmInitializer : public Initializer | ||
| 22 | Globals->abbreviations.insert("RectFromStasmJaw","RectFromPoints([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],10)"); | 22 | Globals->abbreviations.insert("RectFromStasmJaw","RectFromPoints([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14],10)"); |
| 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)"); | 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 | Globals->abbreviations.insert("RectFromStasmNose","RectFromPoints([38, 39, 40, 41, 42, 43, 44, 67],0.1,1.5)+Resize(44,44)"); | 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,9 +192,10 @@ public: | ||
| 192 | aFrame->sequenceNumber = -1; | 192 | aFrame->sequenceNumber = -1; |
| 193 | 193 | ||
| 194 | bool res = getNext(*aFrame); | 194 | bool res = getNext(*aFrame); |
| 195 | + | ||
| 196 | + // The datasource broke. | ||
| 195 | if (!res) { | 197 | if (!res) { |
| 196 | allFrames.addItem(aFrame); | 198 | allFrames.addItem(aFrame); |
| 197 | - // Datasource broke? | ||
| 198 | QMutexLocker lock(&last_frame_update); | 199 | QMutexLocker lock(&last_frame_update); |
| 199 | 200 | ||
| 200 | final_frame = last_issued; | 201 | final_frame = last_issued; |
| @@ -278,6 +279,7 @@ private: | @@ -278,6 +279,7 @@ private: | ||
| 278 | 279 | ||
| 279 | bool res = video.read(output.data.last().last()); | 280 | bool res = video.read(output.data.last().last()); |
| 280 | if (!res) { | 281 | if (!res) { |
| 282 | + video.release(); | ||
| 281 | return false; | 283 | return false; |
| 282 | } | 284 | } |
| 283 | output.data.last().file.set("FrameNumber", output.sequenceNumber); | 285 | output.data.last().file.set("FrameNumber", output.sequenceNumber); |
| @@ -627,6 +629,9 @@ public: | @@ -627,6 +629,9 @@ public: | ||
| 627 | dataSource.returnFrame(input); | 629 | dataSource.returnFrame(input); |
| 628 | input = NULL; | 630 | input = NULL; |
| 629 | 631 | ||
| 632 | + if (!dataSource.isOpen()) | ||
| 633 | + return false; | ||
| 634 | + | ||
| 630 | QReadLocker lock(&statusLock); | 635 | QReadLocker lock(&statusLock); |
| 631 | // Thread is already running, we should just return | 636 | // Thread is already running, we should just return |
| 632 | if (currentStatus == STARTING) | 637 | if (currentStatus == STARTING) |