diff --git a/openbr/core/eval.cpp b/openbr/core/eval.cpp index 3914d4f..4cfcd5c 100755 --- a/openbr/core/eval.cpp +++ b/openbr/core/eval.cpp @@ -906,7 +906,7 @@ float EvalLandmarking(const QString &predictedGallery, const QString &truthGalle // Get best and worst performing examples QList< QPair > exampleIndices = Common::Sort(imageErrors,true); - QScopedPointer t(Transform::make("Open+Draw(rects=false)+CropFromLandmarks+Resize(128,method=Area)",NULL)); + QScopedPointer t(Transform::make("Open+CropFromLandmarks(paddingHorizontal=.3,paddingVertical=.3,shiftPoints=true)+Resize(128,method=Area)+Draw(rects=false,pointRadius=2)",NULL)); for (int i=0; i 1 ? QString(", colour=%1").arg(p.major.header) : QString(), p.minor.size > 1 ? QString(", linetype=%1").arg(p.minor.header) : QString()) + QString("+ annotation_logticks(sides=\"l\") + geom_boxplot(alpha=0.5) + geom_jitter(size=1, alpha=0.5) + scale_x_discrete(\"Landmark\") + scale_y_log10(\"Normalized Error\", breaks=c(0.001,0.01,0.1,1,10)) + theme_minimal()\n\n"))); - p.file.write(qPrintable(QString("ggplot(Box, aes(factor(X), Y%1%2))").arg(p.major.size > 1 ? QString(", colour=%1").arg(p.major.header) : QString(), p.minor.size > 1 ? QString(", linetype=%1").arg(p.minor.header) : QString()) + - QString("+ annotation_logticks(sides=\"l\") + geom_violin(alpha=0.5) + scale_x_discrete(\"Landmark\") + scale_y_log10(\"Normalized Error\", breaks=c(0.001,0.01,0.1,1,10))\n\n"))); - return p.finalize(show); } diff --git a/openbr/plugins/gui/draw.cpp b/openbr/plugins/gui/draw.cpp index 69177ec..5f5fe76 100644 --- a/openbr/plugins/gui/draw.cpp +++ b/openbr/plugins/gui/draw.cpp @@ -38,6 +38,7 @@ class DrawTransform : public UntrainableTransform Q_PROPERTY(bool rects READ get_rects WRITE set_rects RESET reset_rects STORED false) Q_PROPERTY(bool inPlace READ get_inPlace WRITE set_inPlace RESET reset_inPlace STORED false) Q_PROPERTY(int lineThickness READ get_lineThickness WRITE set_lineThickness RESET reset_lineThickness STORED false) + Q_PROPERTY(int pointRadius READ get_pointRadius WRITE set_pointRadius RESET reset_pointRadius STORED false) Q_PROPERTY(bool named READ get_named WRITE set_named RESET reset_named STORED false) Q_PROPERTY(bool location READ get_location WRITE set_location RESET reset_location STORED false) BR_PROPERTY(bool, verbose, false) @@ -45,6 +46,7 @@ class DrawTransform : public UntrainableTransform BR_PROPERTY(bool, rects, true) BR_PROPERTY(bool, inPlace, false) BR_PROPERTY(int, lineThickness, 1) + BR_PROPERTY(int, pointRadius, 3) BR_PROPERTY(bool, named, true) BR_PROPERTY(bool, location, true) @@ -58,7 +60,7 @@ class DrawTransform : public UntrainableTransform const QList pointsList = (named) ? OpenCVUtils::toPoints(src.file.points()+src.file.namedPoints()) : OpenCVUtils::toPoints(src.file.points()); for (int i=0; i indices READ get_indices WRITE set_indices RESET reset_indices STORED false) Q_PROPERTY(float paddingHorizontal READ get_paddingHorizontal WRITE set_paddingHorizontal RESET reset_paddingHorizontal STORED false) Q_PROPERTY(float paddingVertical READ get_paddingVertical WRITE set_paddingVertical RESET reset_paddingVertical STORED false) + Q_PROPERTY(bool shiftPoints READ get_shiftPoints WRITE set_shiftPoints RESET reset_shiftPoints STORED false) BR_PROPERTY(QList, indices, QList()) BR_PROPERTY(float, paddingHorizontal, .1) BR_PROPERTY(float, paddingVertical, .1) + BR_PROPERTY(bool, shiftPoints, false) void project(const Template &src, Template &dst) const { @@ -55,6 +57,13 @@ class CropFromLandmarksTransform : public UntrainableTransform if (rect.x() + rect.width() > src.m().cols) rect.setWidth(src.m().cols - rect.x()); if (rect.y() + rect.width() > src.m().rows) rect.setHeight(src.m().rows - rect.y()); + if (shiftPoints) { + QList points = src.file.points(); + for (int i=0; i points = src.file.points(); for (int i=0; i