Commit 33adb525d201992e0445bd0fb722332c81630eb5

Authored by Josh Klontz
1 parent 0a61040d

improvements to utGallery

openbr/plugins/gallery.cpp
@@ -193,8 +193,8 @@ class utGallery : public BinaryGallery @@ -193,8 +193,8 @@ class utGallery : public BinaryGallery
193 Template t; 193 Template t;
194 br_utemplate ut = (br_utemplate) malloc(sizeof(br_universal_template)); 194 br_utemplate ut = (br_utemplate) malloc(sizeof(br_universal_template));
195 if (gallery.read((char*)ut, sizeof(br_universal_template)) == sizeof(br_universal_template)) { 195 if (gallery.read((char*)ut, sizeof(br_universal_template)) == sizeof(br_universal_template)) {
196 - cv::Mat m = cv::Mat(1, ut->size, CV_8UC1);  
197 - char *dst = (char*) m.data; 196 + QByteArray data(ut->size, Qt::Uninitialized);
  197 + char *dst = data.data();
198 qint64 bytesNeeded = ut->size; 198 qint64 bytesNeeded = ut->size;
199 while (bytesNeeded > 0) { 199 while (bytesNeeded > 0) {
200 qint64 bytesRead = gallery.read(dst, bytesNeeded); 200 qint64 bytesRead = gallery.read(dst, bytesNeeded);
@@ -203,10 +203,17 @@ class utGallery : public BinaryGallery @@ -203,10 +203,17 @@ class utGallery : public BinaryGallery
203 bytesNeeded -= bytesRead; 203 bytesNeeded -= bytesRead;
204 dst += bytesRead; 204 dst += bytesRead;
205 } 205 }
206 - t.append(m);  
207 - t.file.set("ImageID", QVariant(QByteArray((const char*)ut->imageID, 16)));  
208 - t.file.set("TemplateID", QVariant(QByteArray((const char*)ut->templateID, 16)));  
209 - t.file.set("AlgorithmID", QVariant(ut->algorithmID)); 206 +
  207 + if (ut->algorithmID == 5) {
  208 + QDataStream stream(&data, QIODevice::ReadOnly);
  209 + stream >> t;
  210 + } else {
  211 + t.append(cv::Mat(1, data.size(), CV_8UC1, data.data()));
  212 + }
  213 +
  214 + t.file.set("ImageID", QVariant(QByteArray((const char*)ut->imageID, 16).toHex()));
  215 + t.file.set("TemplateID", QVariant(QByteArray((const char*)ut->templateID, 16).toHex()));
  216 + t.file.set("AlgorithmID", ut->algorithmID);
210 } 217 }
211 free(ut); 218 free(ut);
212 return t; 219 return t;
@@ -222,12 +229,18 @@ class utGallery : public BinaryGallery @@ -222,12 +229,18 @@ class utGallery : public BinaryGallery
222 qFatal("Expected 16-byte ImageID, got: %d bytes.", imageID.size()); 229 qFatal("Expected 16-byte ImageID, got: %d bytes.", imageID.size());
223 230
224 const int32_t algorithmID = t.file.get<int32_t>("AlgorithmID"); 231 const int32_t algorithmID = t.file.get<int32_t>("AlgorithmID");
225 - const QByteArray data((const char*) t.m().data, t.m().rows * t.m().cols * t.m().elemSize()); 232 + QByteArray data;
  233 + if (algorithmID == 5) {
  234 + QDataStream stream(&data, QIODevice::WriteOnly);
  235 + stream << t;
  236 + } else {
  237 + data = QByteArray((const char*) t.m().data, t.m().rows * t.m().cols * t.m().elemSize());
  238 + }
226 const QByteArray templateID = QCryptographicHash::hash(data, QCryptographicHash::Md5); 239 const QByteArray templateID = QCryptographicHash::hash(data, QCryptographicHash::Md5);
227 const uint32_t size = data.size(); 240 const uint32_t size = data.size();
228 241
229 - gallery.write(imageID);  
230 - gallery.write(templateID); 242 + gallery.write(QByteArray::fromHex(imageID));
  243 + gallery.write(QByteArray::fromHex(templateID));
231 gallery.write((const char*) &algorithmID, 4); 244 gallery.write((const char*) &algorithmID, 4);
232 gallery.write((const char*) &size, 4); 245 gallery.write((const char*) &size, 4);
233 gallery.write(data); 246 gallery.write(data);
openbr/plugins/misc.cpp
@@ -149,6 +149,9 @@ private: @@ -149,6 +149,9 @@ private:
149 if (!decoded.empty()) 149 if (!decoded.empty())
150 dst += (mode == Encoded) ? encoded : decoded; 150 dst += (mode == Encoded) ? encoded : decoded;
151 } 151 }
  152 +
  153 + dst.file.set("ImageID", QVariant(QCryptographicHash::hash(data, QCryptographicHash::Md5)));
  154 + dst.file.set("AlgorithmID", mode == Decoded ? 5 : 3);
152 } 155 }
153 }; 156 };
154 157