Commit 05e4445fa57b008ebc1871087f1b53c2e4637953
Merge pull request #361 from biometrics/blend_tweak
Blend tweak
Showing
1 changed file
with
15 additions
and
5 deletions
openbr/plugins/imgproc/blend.cpp
| @@ -23,19 +23,29 @@ namespace br | @@ -23,19 +23,29 @@ namespace br | ||
| 23 | 23 | ||
| 24 | /*! | 24 | /*! |
| 25 | * \ingroup transforms | 25 | * \ingroup transforms |
| 26 | - * \brief Alpha-blend two matrices | 26 | + * \brief Alpha-blend matrices |
| 27 | * \author Josh Klontz \cite jklontz | 27 | * \author Josh Klontz \cite jklontz |
| 28 | */ | 28 | */ |
| 29 | class BlendTransform : public UntrainableMetaTransform | 29 | class BlendTransform : public UntrainableMetaTransform |
| 30 | { | 30 | { |
| 31 | Q_OBJECT | 31 | Q_OBJECT |
| 32 | - Q_PROPERTY(float alpha READ get_alpha WRITE set_alpha RESET reset_alpha STORED false) | ||
| 33 | - BR_PROPERTY(float, alpha, 0.5) | 32 | + Q_PROPERTY(QList<float> alpha READ get_alpha WRITE set_alpha RESET reset_alpha STORED false) |
| 33 | + BR_PROPERTY(QList<float>, alpha, QList<float>() << 0.5) | ||
| 34 | 34 | ||
| 35 | void project(const Template &src, Template &dst) const | 35 | void project(const Template &src, Template &dst) const |
| 36 | { | 36 | { |
| 37 | - if (src.size() != 2) qFatal("Expected two source matrices."); | ||
| 38 | - addWeighted(src[0], alpha, src[1], 1-alpha, 0, dst); | 37 | + dst.file = src.file; |
| 38 | + dst.m() = Mat::zeros(src.m().rows, src.m().cols, src.m().type()); | ||
| 39 | + | ||
| 40 | + QList<float> a = alpha; | ||
| 41 | + | ||
| 42 | + if (src.size() == 2 && a.size() == 1) | ||
| 43 | + a << 1-a[0]; | ||
| 44 | + | ||
| 45 | + for (int i=0; i<src.size(); i++) { | ||
| 46 | + const float weight = (a.size() == src.size()) ? a[i] : 1./src.size(); | ||
| 47 | + dst.m() += src[i]*weight; | ||
| 48 | + } | ||
| 39 | } | 49 | } |
| 40 | }; | 50 | }; |
| 41 | 51 |