Check data size when converting images into leveldb
authorKai Li <kaili_kloud@163.com>
Tue, 11 Feb 2014 07:14:11 +0000 (15:14 +0800)
committerKai Li <kaili_kloud@163.com>
Tue, 11 Feb 2014 11:40:21 +0000 (19:40 +0800)
examples/convert_imageset.cpp

index ee0e3ad..513eb31 100644 (file)
@@ -69,11 +69,19 @@ int main(int argc, char** argv) {
   const int maxKeyLength = 256;
   char key_cstr[maxKeyLength];
   leveldb::WriteBatch* batch = new leveldb::WriteBatch();
+  int data_size;
+  bool data_size_initialized = false;
   for (int line_id = 0; line_id < lines.size(); ++line_id) {
     if (!ReadImageToDatum(root_folder + lines[line_id].first, lines[line_id].second,
                           &datum)) {
       continue;
     };
+    if (!data_size_initialized) {
+      data_size = datum.channels() * datum.height() * datum.width();
+    } else {
+      const string& data = datum.data();
+      CHECK_EQ(data.size(), data_size) << "Incorrect data field size " << data.size();
+    }
     // sequential
     snprintf(key_cstr, maxKeyLength, "%08d_%s", line_id, lines[line_id].first.c_str());
     string value;