Commit d7538510516f74995885d9803401074af5a48156

Authored by Scott Klum
1 parent 39c93c18

Added support for more than two matrices in blend

openbr/plugins/imgproc/blend.cpp
... ... @@ -29,13 +29,22 @@ namespace br
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 +
  39 + if (src.size() != 2) {
  40 + dst.m() = Mat::zeros(src.m().rows, src.m().cols, src.m().type());
  41 + for (int i=0; i<src.size(); i++) {
  42 + const float weight = (alpha.size() == src.size()) ? alpha[i] : 1./src.size();
  43 + dst.m() += src[i]*weight;
  44 + }
  45 + } else {
  46 + addWeighted(src[0], alpha[0], src[1], 1-alpha[0], 0, dst);
  47 + }
39 48 }
40 49 };
41 50  
... ...