Commit 0ffe4ba6a0b0452509fd4ec3502055d80c30a225

Authored by Josh Klontz
1 parent 584e8718

added .ut universal_template gallery support

openbr/plugins/gallery.cpp
... ... @@ -28,6 +28,7 @@
28 28 #include <opencv2/highgui/highgui.hpp>
29 29 #include "openbr_internal.h"
30 30  
  31 +#include "openbr/universal_template.h"
31 32 #include "openbr/core/bee.h"
32 33 #include "openbr/core/common.h"
33 34 #include "openbr/core/opencvutils.h"
... ... @@ -88,19 +89,9 @@ class arffGallery : public Gallery
88 89  
89 90 BR_REGISTER(Gallery, arffGallery)
90 91  
91   -/*!
92   - * \ingroup galleries
93   - * \brief A binary gallery.
94   - *
95   - * Designed to be a literal translation of templates to disk.
96   - * Compatible with TemplateList::fromBuffer.
97   - * \author Josh Klontz \cite jklontz
98   - */
99   -class galGallery : public Gallery
  92 +class BinaryGallery : public Gallery
100 93 {
101 94 Q_OBJECT
102   - QFile gallery;
103   - QDataStream stream;
104 95  
105 96 void init()
106 97 {
... ... @@ -125,9 +116,7 @@ class galGallery : public Gallery
125 116  
126 117 TemplateList templates;
127 118 while ((templates.size() < readBlockSize) && !stream.atEnd()) {
128   - Template m;
129   - stream >> m;
130   - templates.append(m);
  119 + templates.append(readTemplate());
131 120 templates.last().file.set("progress", totalSize());
132 121 }
133 122  
... ... @@ -135,13 +124,9 @@ class galGallery : public Gallery
135 124 return templates;
136 125 }
137 126  
138   - void write(const Template &t)
139   - {
140   - if (t.isEmpty() && t.file.isNull())
141   - return;
142   -
143   - stream << t;
144   - }
  127 +protected:
  128 + QFile gallery;
  129 + QDataStream stream;
145 130  
146 131 qint64 totalSize()
147 132 {
... ... @@ -153,12 +138,70 @@ class galGallery : public Gallery
153 138 return gallery.pos();
154 139 }
155 140  
  141 + virtual Template readTemplate() = 0;
  142 +};
  143 +
  144 +/*!
  145 + * \ingroup galleries
  146 + * \brief A binary gallery.
  147 + *
  148 + * Designed to be a literal translation of templates to disk.
  149 + * Compatible with TemplateList::fromBuffer.
  150 + * \author Josh Klontz \cite jklontz
  151 + */
  152 +class galGallery : public BinaryGallery
  153 +{
  154 + Q_OBJECT
  155 +
  156 + Template readTemplate()
  157 + {
  158 + Template t;
  159 + stream >> t;
  160 + return t;
  161 + }
  162 +
  163 + void write(const Template &t)
  164 + {
  165 + if (t.isEmpty() && t.file.isNull())
  166 + return;
  167 + stream << t;
  168 + }
156 169 };
157 170  
158 171 BR_REGISTER(Gallery, galGallery)
159 172  
160 173 /*!
161 174 * \ingroup galleries
  175 + * \brief A contiguous array of br_universal_template.
  176 + * \author Josh Klontz \cite jklontz
  177 + */
  178 +class utGallery : public BinaryGallery
  179 +{
  180 + Q_OBJECT
  181 +
  182 + Template readTemplate()
  183 + {
  184 + cv::Mat m;
  185 + br_utemplate t = (br_utemplate) malloc(sizeof(br_universal_template));
  186 + if (gallery.read((char*)t, sizeof(br_universal_template)) == sizeof(br_universal_template)) {
  187 + m = cv::Mat(1, t->size, CV_8UC1);
  188 + if (gallery.read((char*)m.data, t->size) != t->size)
  189 + qFatal("Unexepected EOF when reading universal template data.");
  190 + }
  191 + free(t);
  192 + return m;
  193 + }
  194 +
  195 + void write(const Template &)
  196 + {
  197 + qFatal("Not implemented.");
  198 + }
  199 +};
  200 +
  201 +BR_REGISTER(Gallery, utGallery)
  202 +
  203 +/*!
  204 + * \ingroup galleries
162 205 * \brief Reads/writes templates to/from folders.
163 206 * \author Josh Klontz \cite jklontz
164 207 * \param regexp An optional regular expression to match against the files extension.
... ...
openbr/plugins/misc.cpp
... ... @@ -55,6 +55,23 @@ BR_REGISTER(Transform, OpenTransform)
55 55  
56 56 /*!
57 57 * \ingroup transforms
  58 + * \brief Decodes images
  59 + * \author Josh Klontz \cite jklontz
  60 + */
  61 +class DecodeTransform : public UntrainableTransform
  62 +{
  63 + Q_OBJECT
  64 +
  65 + void project(const Template &src, Template &dst) const
  66 + {
  67 + dst.append(cv::imdecode(src.m(), IMREAD_UNCHANGED));
  68 + }
  69 +};
  70 +
  71 +BR_REGISTER(Transform, DecodeTransform)
  72 +
  73 +/*!
  74 + * \ingroup transforms
58 75 * \brief Prints the template's file to stdout or stderr.
59 76 * \author Josh Klontz \cite jklontz
60 77 */
... ...