Commit 05e4445fa57b008ebc1871087f1b53c2e4637953

Authored by Scott Klum
2 parents 25ccf5ce 93b0aadb

Merge pull request #361 from biometrics/blend_tweak

Blend tweak
openbr/plugins/imgproc/blend.cpp
... ... @@ -23,19 +23,29 @@ namespace br
23 23  
24 24 /*!
25 25 * \ingroup transforms
26   - * \brief Alpha-blend two matrices
  26 + * \brief Alpha-blend matrices
27 27 * \author Josh Klontz \cite jklontz
28 28 */
29 29 class BlendTransform : public UntrainableMetaTransform
30 30 {
31 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 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  
... ...