Commit f9adb23cf372aefeed1f556c1e3cbaa29e83001b
1 parent
4a896b66
Add a bool option to StasmTransform allowing output in the stasm3 points format
Showing
1 changed file
with
10 additions
and
1 deletions
openbr/plugins/stasm4.cpp
| @@ -54,6 +54,9 @@ class StasmTransform : public UntrainableTransform | @@ -54,6 +54,9 @@ class StasmTransform : public UntrainableTransform | ||
| 54 | { | 54 | { |
| 55 | Q_OBJECT | 55 | Q_OBJECT |
| 56 | 56 | ||
| 57 | + Q_PROPERTY(bool stasm3Format READ get_stasm3Format WRITE set_stasm3Format RESET reset_stasm3Format STORED false) | ||
| 58 | + BR_PROPERTY(bool, stasm3Format, false) | ||
| 59 | + | ||
| 57 | Resource<StasmCascadeClassifier> stasmCascadeResource; | 60 | Resource<StasmCascadeClassifier> stasmCascadeResource; |
| 58 | 61 | ||
| 59 | void init() | 62 | void init() |
| @@ -69,14 +72,20 @@ class StasmTransform : public UntrainableTransform | @@ -69,14 +72,20 @@ class StasmTransform : public UntrainableTransform | ||
| 69 | StasmCascadeClassifier *stasmCascade = stasmCascadeResource.acquire(); | 72 | StasmCascadeClassifier *stasmCascade = stasmCascadeResource.acquire(); |
| 70 | 73 | ||
| 71 | int foundface; | 74 | int foundface; |
| 75 | + int nLandmarks = stasm_NLANDMARKS; | ||
| 72 | float landmarks[2 * stasm_NLANDMARKS]; | 76 | float landmarks[2 * stasm_NLANDMARKS]; |
| 73 | stasm_search_single(&foundface, landmarks, reinterpret_cast<const char*>(src.m().data), src.m().cols, src.m().rows, *stasmCascade, NULL, NULL); | 77 | stasm_search_single(&foundface, landmarks, reinterpret_cast<const char*>(src.m().data), src.m().cols, src.m().rows, *stasmCascade, NULL, NULL); |
| 74 | 78 | ||
| 79 | + if (stasm3Format) { | ||
| 80 | + nLandmarks = 76; | ||
| 81 | + stasm_convert_shape(landmarks, nLandmarks); | ||
| 82 | + } | ||
| 83 | + | ||
| 75 | stasmCascadeResource.release(stasmCascade); | 84 | stasmCascadeResource.release(stasmCascade); |
| 76 | 85 | ||
| 77 | if (!foundface) qWarning("No face found in %s", qPrintable(src.file.fileName())); | 86 | if (!foundface) qWarning("No face found in %s", qPrintable(src.file.fileName())); |
| 78 | else { | 87 | else { |
| 79 | - for (int i = 0; i < stasm_NLANDMARKS; i++) | 88 | + for (int i = 0; i < nLandmarks; i++) |
| 80 | dst.file.appendPoint(QPointF(landmarks[2 * i], landmarks[2 * i + 1])); | 89 | dst.file.appendPoint(QPointF(landmarks[2 * i], landmarks[2 * i + 1])); |
| 81 | } | 90 | } |
| 82 | 91 |