diff --git a/openbr/plugins/filter.cpp b/openbr/plugins/filter.cpp index c57ca1c..48fbe75 100644 --- a/openbr/plugins/filter.cpp +++ b/openbr/plugins/filter.cpp @@ -61,11 +61,23 @@ class BlurTransform : public UntrainableTransform { Q_OBJECT Q_PROPERTY(float sigma READ get_sigma WRITE set_sigma RESET reset_sigma STORED false) + Q_PROPERTY(bool ROI READ get_ROI WRITE set_ROI RESET reset_ROI STORED false) BR_PROPERTY(float, sigma, 1) + BR_PROPERTY(bool, ROI, false) void project(const Template &src, Template &dst) const { - GaussianBlur(src, dst, Size(0,0), sigma); + if (!ROI) GaussianBlur(src, dst, Size(0,0), sigma); + else { + dst.m() = src.m(); + foreach (const QRectF &rect, src.file.rects()) { + Rect region(rect.x(), rect.y(), rect.width(), rect.height()); + Mat input = dst.m(); + Mat output = input.clone(); + GaussianBlur(input(region), output(region), Size(0,0), sigma); + dst.m() = output; + } + } } }; diff --git a/openbr/plugins/gui.cpp b/openbr/plugins/gui.cpp index 80f6174..3aab218 100644 --- a/openbr/plugins/gui.cpp +++ b/openbr/plugins/gui.cpp @@ -764,7 +764,8 @@ public: } else { - dst[i].file.set(labelSet[idx], rectSet[idx]); + if (labels.isEmpty()) dst[i].file.appendRect(rectSet[idx]); + else dst[i].file.set(labelSet[idx], rectSet[idx]); } } }