diff --git a/sdk/openbr_plugin.cpp b/sdk/openbr_plugin.cpp index 658214d..83ad22f 100644 --- a/sdk/openbr_plugin.cpp +++ b/sdk/openbr_plugin.cpp @@ -227,6 +227,24 @@ QList File::landmarks() const return landmarks; } +QList File::namedLandmarks() const +{ + QList landmarks; + QStringList keys = localMetadata().keys(); + foreach (const QString &key, keys) { + if (!key.endsWith("_X")) + continue; + QString keyBaseName = key.left(key.size()-2); + if (!keys.contains(keyBaseName+"_Y") || + keys.contains(keyBaseName+"_Width") || + keys.contains(keyBaseName+"_Height") || + keys.contains(keyBaseName+"_Radius")) + continue; + landmarks.append(QPointF(getFloat(keyBaseName+"_X"), getFloat(keyBaseName+"_Y"))); + } + return landmarks; +} + void File::appendLandmark(const QPointF &landmark) { QList newLandmarks = m_metadata["Landmarks"].toList(); diff --git a/sdk/openbr_plugin.h b/sdk/openbr_plugin.h index fa794f5..8fd4ba0 100644 --- a/sdk/openbr_plugin.h +++ b/sdk/openbr_plugin.h @@ -204,6 +204,7 @@ struct BR_EXPORT File 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. */ QList landmarks() const; /*!< \brief Returns the file's landmark list. */ + QList namedLandmarks() const; /*!< \brief Returns landmarks derived from metadata keys. */ void appendLandmark(const QPointF &landmark); /*!< \brief Adds a landmark to the file's landmark list. */ void appendLandmarks(const QList &landmarks); /*!< \brief Adds landmarks to the file's landmark list. */ inline void clearLandmarks() { m_metadata["Landmarks"] = QList(); } /*!< \brief Clears the file's landmark list. */ diff --git a/sdk/plugins/draw.cpp b/sdk/plugins/draw.cpp index ec915aa..3df8990 100644 --- a/sdk/plugins/draw.cpp +++ b/sdk/plugins/draw.cpp @@ -44,6 +44,9 @@ class DrawTransform : public UntrainableTransform QList landmarks = OpenCVUtils::toPoints(src.file.landmarks()); foreach (const Point2f &landmark, landmarks) circle(dst, landmark, 3, color, -1); + QList namedLandmarks = OpenCVUtils::toPoints(src.file.namedLandmarks()); + foreach (const Point2f &landmark, namedLandmarks) + circle(dst, landmark, 3, color); QList ROIs = OpenCVUtils::toRects(src.file.ROIs()); foreach (const Rect ROI, ROIs) rectangle(dst, ROI, color);