Commit 5030971401a8dfe92f6d0ae32c0a668e480c11e0
1 parent
b18c77d1
Transform to compute the mean image from templates and write as image
Showing
1 changed file
with
47 additions
and
1 deletions
openbr/plugins/draw.cpp
| ... | ... | @@ -554,12 +554,58 @@ class WriteImageTransform : public TimeVaryingTransform |
| 554 | 554 | { |
| 555 | 555 | dst = src; |
| 556 | 556 | OpenCVUtils::saveImage(dst.m(), QString("%1/%2_%3.%4").arg(outputDirectory).arg(imageName).arg(cnt++, 5, QChar('0')).arg(imgExtension)); |
| 557 | -qDebug() << "AT " << cnt; | |
| 558 | 557 | } |
| 559 | 558 | |
| 560 | 559 | }; |
| 561 | 560 | BR_REGISTER(Transform, WriteImageTransform) |
| 562 | 561 | |
| 562 | + | |
| 563 | +/** | |
| 564 | + * @brief The MeanImageTransform class computes the average template/image | |
| 565 | + * and save the result as an encoded image. | |
| 566 | + */ | |
| 567 | +class MeanImageTransform : public TimeVaryingTransform | |
| 568 | +{ | |
| 569 | + Q_OBJECT | |
| 570 | + | |
| 571 | + Q_PROPERTY(QString imgname READ get_imgname WRITE set_imgname RESET reset_imgname STORED false) | |
| 572 | + Q_PROPERTY(QString ext READ get_ext WRITE set_ext RESET reset_ext STORED false) | |
| 573 | + | |
| 574 | + BR_PROPERTY(QString, imgname, "average") | |
| 575 | + BR_PROPERTY(QString, ext, "jpg") | |
| 576 | + | |
| 577 | + Mat average; | |
| 578 | + int cnt; | |
| 579 | + | |
| 580 | + void init() | |
| 581 | + { | |
| 582 | + cnt = 0; | |
| 583 | + } | |
| 584 | + | |
| 585 | + void projectUpdate(const Template &src, Template &dst) | |
| 586 | + { | |
| 587 | + dst = src; | |
| 588 | + if (cnt == 0) | |
| 589 | + average = Mat::zeros(dst.m().size(),dst.m().type()); | |
| 590 | + average += dst; | |
| 591 | + cnt++; | |
| 592 | + } | |
| 593 | + | |
| 594 | + virtual void finalize(TemplateList & output) | |
| 595 | + { | |
| 596 | + average /= cnt; | |
| 597 | + imwrite(QString("%1.%2").arg(imgname).arg(ext).toStdString(), average); | |
| 598 | + output = TemplateList(); | |
| 599 | + } | |
| 600 | + | |
| 601 | + | |
| 602 | +public: | |
| 603 | + MeanImageTransform() : TimeVaryingTransform(true, false) {} | |
| 604 | +}; | |
| 605 | + | |
| 606 | +BR_REGISTER(Transform, MeanImageTransform) | |
| 607 | + | |
| 608 | + | |
| 563 | 609 | // TODO: re-implement EditTransform using Qt |
| 564 | 610 | #if 0 |
| 565 | 611 | /*! | ... | ... |