Commit fc3867a78e6c308dfdcf7878c1f747de6dd8fd3b
1 parent
75bfbaec
improved DrawTransform
Showing
3 changed files
with
22 additions
and
0 deletions
sdk/openbr_plugin.cpp
| @@ -227,6 +227,24 @@ QList<QPointF> File::landmarks() const | @@ -227,6 +227,24 @@ QList<QPointF> File::landmarks() const | ||
| 227 | return landmarks; | 227 | return landmarks; |
| 228 | } | 228 | } |
| 229 | 229 | ||
| 230 | +QList<QPointF> File::namedLandmarks() const | ||
| 231 | +{ | ||
| 232 | + QList<QPointF> landmarks; | ||
| 233 | + QStringList keys = localMetadata().keys(); | ||
| 234 | + foreach (const QString &key, keys) { | ||
| 235 | + if (!key.endsWith("_X")) | ||
| 236 | + continue; | ||
| 237 | + QString keyBaseName = key.left(key.size()-2); | ||
| 238 | + if (!keys.contains(keyBaseName+"_Y") || | ||
| 239 | + keys.contains(keyBaseName+"_Width") || | ||
| 240 | + keys.contains(keyBaseName+"_Height") || | ||
| 241 | + keys.contains(keyBaseName+"_Radius")) | ||
| 242 | + continue; | ||
| 243 | + landmarks.append(QPointF(getFloat(keyBaseName+"_X"), getFloat(keyBaseName+"_Y"))); | ||
| 244 | + } | ||
| 245 | + return landmarks; | ||
| 246 | +} | ||
| 247 | + | ||
| 230 | void File::appendLandmark(const QPointF &landmark) | 248 | void File::appendLandmark(const QPointF &landmark) |
| 231 | { | 249 | { |
| 232 | QList<QVariant> newLandmarks = m_metadata["Landmarks"].toList(); | 250 | QList<QVariant> newLandmarks = m_metadata["Landmarks"].toList(); |
sdk/openbr_plugin.h
| @@ -204,6 +204,7 @@ struct BR_EXPORT File | @@ -204,6 +204,7 @@ struct BR_EXPORT File | ||
| 204 | QString getString(const QString &key, const QString &defaultValue) const; /*!< \brief Returns a string value for the key, returning \em defaultValue if the key does not exist. */ | 204 | QString getString(const QString &key, const QString &defaultValue) const; /*!< \brief Returns a string value for the key, returning \em defaultValue if the key does not exist. */ |
| 205 | 205 | ||
| 206 | QList<QPointF> landmarks() const; /*!< \brief Returns the file's landmark list. */ | 206 | QList<QPointF> landmarks() const; /*!< \brief Returns the file's landmark list. */ |
| 207 | + QList<QPointF> namedLandmarks() const; /*!< \brief Returns landmarks derived from metadata keys. */ | ||
| 207 | void appendLandmark(const QPointF &landmark); /*!< \brief Adds a landmark to the file's landmark list. */ | 208 | void appendLandmark(const QPointF &landmark); /*!< \brief Adds a landmark to the file's landmark list. */ |
| 208 | void appendLandmarks(const QList<QPointF> &landmarks); /*!< \brief Adds landmarks to the file's landmark list. */ | 209 | void appendLandmarks(const QList<QPointF> &landmarks); /*!< \brief Adds landmarks to the file's landmark list. */ |
| 209 | inline void clearLandmarks() { m_metadata["Landmarks"] = QList<QVariant>(); } /*!< \brief Clears the file's landmark list. */ | 210 | inline void clearLandmarks() { m_metadata["Landmarks"] = QList<QVariant>(); } /*!< \brief Clears the file's landmark list. */ |
sdk/plugins/draw.cpp
| @@ -44,6 +44,9 @@ class DrawTransform : public UntrainableTransform | @@ -44,6 +44,9 @@ class DrawTransform : public UntrainableTransform | ||
| 44 | QList<Point2f> landmarks = OpenCVUtils::toPoints(src.file.landmarks()); | 44 | QList<Point2f> landmarks = OpenCVUtils::toPoints(src.file.landmarks()); |
| 45 | foreach (const Point2f &landmark, landmarks) | 45 | foreach (const Point2f &landmark, landmarks) |
| 46 | circle(dst, landmark, 3, color, -1); | 46 | circle(dst, landmark, 3, color, -1); |
| 47 | + QList<Point2f> namedLandmarks = OpenCVUtils::toPoints(src.file.namedLandmarks()); | ||
| 48 | + foreach (const Point2f &landmark, namedLandmarks) | ||
| 49 | + circle(dst, landmark, 3, color); | ||
| 47 | QList<Rect> ROIs = OpenCVUtils::toRects(src.file.ROIs()); | 50 | QList<Rect> ROIs = OpenCVUtils::toRects(src.file.ROIs()); |
| 48 | foreach (const Rect ROI, ROIs) | 51 | foreach (const Rect ROI, ROIs) |
| 49 | rectangle(dst, ROI, color); | 52 | rectangle(dst, ROI, color); |