Commit 56ee03428a3c38b81e96db14406284d363c80764

Authored by Scott Klum
1 parent 5905bd19

Updated pad

Showing 1 changed file with 25 additions and 12 deletions
openbr/plugins/imgproc/pad.cpp
  1 +#include <opencv2/imgproc/imgproc.hpp>
1 2 #include <openbr/plugins/openbr_internal.h>
2 3  
3 4 using namespace cv;
... ... @@ -5,24 +6,36 @@ using namespace cv;
5 6 namespace br
6 7 {
7 8  
  9 +/*!
  10 + * \ingroup transforms
  11 + * \brief Pads an image.
  12 + * \author Scott Klum \cite sklum
  13 + */
8 14 class PadTransform : public UntrainableTransform
9 15 {
10 16 Q_OBJECT
11   -
12   - Q_PROPERTY(int padSize READ get_padSize WRITE set_padSize RESET reset_padSize STORED false)
13   - Q_PROPERTY(int padValue READ get_padValue WRITE set_padValue RESET reset_padValue STORED false)
14   - BR_PROPERTY(int, padSize, 0)
15   - BR_PROPERTY(int, padValue, 0)
  17 + Q_ENUMS(Method)
  18 +
  19 +public:
  20 + /*!< */
  21 + enum Border { Replicate = BORDER_REPLICATE,
  22 + Reflect = BORDER_REFLECT_101,
  23 + Constant = BORDER_CONSTANT};
  24 +
  25 +private:
  26 + Q_PROPERTY(Border border READ get_border WRITE set_border RESET reset_border STORED false)
  27 + Q_PROPERTY(float percent READ get_percent WRITE set_percent RESET reset_percent STORED false)
  28 + Q_PROPERTY(int value READ get_value WRITE set_value RESET reset_value STORED false)
  29 + BR_PROPERTY(Border, border, Replicate)
  30 + BR_PROPERTY(float, percent, .1)
  31 + BR_PROPERTY(float, value, 0)
16 32  
17 33 void project(const Template &src, Template &dst) const
18 34 {
19   - dst.file = src.file;
20   -
21   - foreach (const Mat &m, src) {
22   - Mat padded = padValue * Mat::ones(m.rows + 2*padSize, m.cols + 2*padSize, m.type());
23   - padded(Rect(padSize, padSize, padded.cols - padSize, padded.rows - padSize)) = m;
24   - dst += padded;
25   - }
  35 + int top, bottom, left, right;
  36 + top = percent*src.m().rows; bottom = percent*src.m().rows;
  37 + left = percent*src.m().cols; right = percent*src.m().cols;
  38 + copyMakeBorder(src, dst, top, bottom, left, right, border, Scalar(value));
26 39 }
27 40 };
28 41  
... ...