Commit 2967908e3e0176df3b16c083ff91e05020fef5f8

Authored by Scott Klum
1 parent ccc5d38c

vecGallery write done

Showing 1 changed file with 49 additions and 17 deletions
openbr/plugins/gallery/vec.cpp
@@ -9,7 +9,7 @@ namespace br @@ -9,7 +9,7 @@ namespace br
9 * \author Scott Klum \cite sklum 9 * \author Scott Klum \cite sklum
10 */ 10 */
11 11
12 -class vecGallery : public Gallery 12 +class vecGallery : public FileGallery
13 { 13 {
14 Q_OBJECT 14 Q_OBJECT
15 15
@@ -18,27 +18,56 @@ class vecGallery : public Gallery @@ -18,27 +18,56 @@ class vecGallery : public Gallery
18 BR_PROPERTY(int, width, 24) 18 BR_PROPERTY(int, width, 24)
19 BR_PROPERTY(int, height, 24) 19 BR_PROPERTY(int, height, 24)
20 20
21 - TemplateList readBlock(bool *done) 21 + QList<cv::Mat> mats;
  22 +
  23 + ~vecGallery()
22 { 24 {
23 - *done = true; 25 + if (mats.isEmpty())
  26 + return;
  27 +
  28 + writeOpen();
  29 +
  30 + // Write header
  31 + int count = mats.size();
  32 + int size = width*height;
  33 + short temp = 0;
  34 +
  35 + const size_t write1 = f.write((char*)&count,sizeof(count));
  36 + const size_t write2 = f.write((char*)&size,sizeof(size));
  37 + const size_t write3 = f.write((char*)&temp,sizeof(temp));
  38 + const size_t write4 = f.write((char*)&temp,sizeof(temp));
  39 +
  40 + if (write1 != sizeof(count) || write2 != sizeof(size) || write3 != sizeof(temp) || write4 != sizeof(temp))
  41 + qFatal("Failed to write header.");
  42 +
  43 + for (int i=0; i<count; i++) {
  44 + uchar tmp = 0;
  45 + const size_t write5 = f.write((char*)&tmp,sizeof(tmp));
24 46
25 - QFile gallery;  
26 - gallery.setFileName(file);  
27 - if (!gallery.exists())  
28 - qFatal("File %s does not exist", qPrintable(gallery.fileName())); 47 + for (int r = 0; r < height; r++)
  48 + for (int c = 0; c < width; c++) {
  49 + short buffer = mats[i].ptr(r)[c];
  50 + f.write((char*)&buffer, sizeof(buffer));
  51 + }
  52 + }
  53 +
  54 + f.close();
  55 + }
29 56
30 - QFile::OpenMode mode = QFile::ReadOnly;  
31 - if (!gallery.open(mode))  
32 - qFatal("Can't open gallery: %s for reading", qPrintable(gallery.fileName())); 57 + TemplateList readBlock(bool *done)
  58 + {
  59 + readOpen();
  60 +
  61 + *done = true;
33 62
34 // Read header 63 // Read header
35 int count, size; 64 int count, size;
36 short temp; 65 short temp;
37 66
38 - const size_t read1 = gallery.read((char*)&count,sizeof(count));  
39 - const size_t read2 = gallery.read((char*)&size,sizeof(size));  
40 - const size_t read3 = gallery.read((char*)&temp,sizeof(temp));  
41 - const size_t read4 = gallery.read((char*)&temp,sizeof(temp)); 67 + const size_t read1 = f.read((char*)&count,sizeof(count));
  68 + const size_t read2 = f.read((char*)&size,sizeof(size));
  69 + const size_t read3 = f.read((char*)&temp,sizeof(temp));
  70 + const size_t read4 = f.read((char*)&temp,sizeof(temp));
42 71
43 if (read1 != sizeof(count) || read2 != sizeof(size) || read3 != sizeof(temp) || read4 != sizeof(temp)) 72 if (read1 != sizeof(count) || read2 != sizeof(size) || read3 != sizeof(temp) || read4 != sizeof(temp))
44 qFatal("Failed to read header."); 73 qFatal("Failed to read header.");
@@ -52,8 +81,8 @@ class vecGallery : public Gallery @@ -52,8 +81,8 @@ class vecGallery : public Gallery
52 TemplateList templates; 81 TemplateList templates;
53 for (int i=0; i<count; i++) { 82 for (int i=0; i<count; i++) {
54 uchar tmp = 0; 83 uchar tmp = 0;
55 - const size_t read5 = gallery.read((char*)&tmp,sizeof(tmp));  
56 - const size_t read6 = gallery.read((char*)vec,size*sizeof(short)); 84 + const size_t read5 = f.read((char*)&tmp,sizeof(tmp));
  85 + const size_t read6 = f.read((char*)vec,size*sizeof(short));
57 86
58 if (read5 != sizeof(tmp) || read6 != size*sizeof(short)) 87 if (read5 != sizeof(tmp) || read6 != size*sizeof(short))
59 qFatal("Unable to read vector."); 88 qFatal("Unable to read vector.");
@@ -72,7 +101,10 @@ class vecGallery : public Gallery @@ -72,7 +101,10 @@ class vecGallery : public Gallery
72 101
73 void write(const Template &t) 102 void write(const Template &t)
74 { 103 {
75 - Q_UNUSED(t); 104 + if (t.m().rows == height && t.m().cols == width)
  105 + mats.append(t);
  106 + else
  107 + qFatal("Matrix has incorrect width/height.");
76 } 108 }
77 }; 109 };
78 110