diff --git a/openbr/plugins/misc.cpp b/openbr/plugins/misc.cpp index 62b28c6..93e3b8a 100644 --- a/openbr/plugins/misc.cpp +++ b/openbr/plugins/misc.cpp @@ -90,6 +90,48 @@ BR_REGISTER(Transform, DecodeTransform) /*! * \ingroup transforms + * \brief Read images + * \author Josh Klontz \cite jklontz + */ +class ReadTransform : public UntrainableMetaTransform +{ + Q_OBJECT + Q_ENUMS(Mode) + Q_PROPERTY(Mode mode READ get_mode WRITE set_mode RESET reset_mode) + +public: + enum Mode + { + Unchanged = IMREAD_UNCHANGED, + Grayscale = IMREAD_GRAYSCALE, + Color = IMREAD_COLOR, + AnyDepth = IMREAD_ANYDEPTH, + AnyColor = IMREAD_ANYCOLOR + }; + +private: + BR_PROPERTY(Mode, mode, Color) + + void project(const Template &src, Template &dst) const + { + dst.file = src.file; + if (src.empty()) { + const Mat img = imread(src.file.resolved().toStdString(), mode); + if (img.data) dst.append(img); + else dst.file.fte = true; + } else { + foreach (const Mat &m, src) { + const Mat img = imdecode(m, mode); + if (img.data) dst.append(img); + else dst.file.fte = true; + } + } + } +}; +BR_REGISTER(Transform, ReadTransform) + +/*! + * \ingroup transforms * \brief Downloads an image from a URL * \author Josh Klontz \cite jklontz */