summaryrefslogtreecommitdiffstats
path: root/ml/dlib/dlib/data_io/image_dataset_metadata.h
diff options
context:
space:
mode:
Diffstat (limited to 'ml/dlib/dlib/data_io/image_dataset_metadata.h')
-rw-r--r--ml/dlib/dlib/data_io/image_dataset_metadata.h174
1 files changed, 174 insertions, 0 deletions
diff --git a/ml/dlib/dlib/data_io/image_dataset_metadata.h b/ml/dlib/dlib/data_io/image_dataset_metadata.h
new file mode 100644
index 000000000..3dac29ba6
--- /dev/null
+++ b/ml/dlib/dlib/data_io/image_dataset_metadata.h
@@ -0,0 +1,174 @@
+// Copyright (C) 2011 Davis E. King (davis@dlib.net)
+// License: Boost Software License See LICENSE.txt for the full license.
+#ifndef DLIB_IMAGE_DAtASET_METADATA_Hh_
+#define DLIB_IMAGE_DAtASET_METADATA_Hh_
+
+#include <string>
+#include <vector>
+#include "../geometry.h"
+
+// ----------------------------------------------------------------------------------------
+
+namespace dlib
+{
+ namespace image_dataset_metadata
+ {
+
+ // ------------------------------------------------------------------------------------
+
+ enum gender_t
+ {
+ UNKNOWN,
+ MALE,
+ FEMALE
+ };
+
+ // ------------------------------------------------------------------------------------
+
+ struct box
+ {
+ /*!
+ WHAT THIS OBJECT REPRESENTS
+ This object represents an annotated rectangular area of an image.
+ It is typically used to mark the location of an object such as a
+ person, car, etc.
+
+ The main variable of interest is rect. It gives the location of
+ the box. All the other variables are optional.
+ !*/
+
+ box(
+ ) :
+ difficult(false),
+ truncated(false),
+ occluded(false),
+ ignore(false),
+ pose(0),
+ detection_score(0),
+ angle(0),
+ gender(UNKNOWN),
+ age(0)
+ {}
+
+ box (
+ const rectangle& rect_
+ ) :
+ rect(rect_),
+ difficult(false),
+ truncated(false),
+ occluded(false),
+ ignore(false),
+ pose(0),
+ detection_score(0),
+ angle(0),
+ gender(UNKNOWN),
+ age(0)
+ {}
+
+ rectangle rect;
+
+ std::map<std::string,point> parts;
+
+ // optional fields
+ std::string label;
+ bool difficult;
+ bool truncated;
+ bool occluded;
+ bool ignore;
+ double pose;
+ double detection_score;
+
+ // The angle of the object in radians. Positive values indicate that the
+ // object at the center of the box is rotated clockwise by angle radians. A
+ // value of 0 would indicate that the object is in its "standard" upright pose.
+ // Therefore, to make the object appear upright we would have to rotate the
+ // image counter-clockwise by angle radians.
+ double angle;
+
+ gender_t gender;
+ double age;
+
+ bool has_label() const { return label.size() != 0; }
+ /*!
+ ensures
+ - returns true if label metadata is present and false otherwise.
+ !*/
+ };
+
+ // ------------------------------------------------------------------------------------
+
+ struct image
+ {
+ /*!
+ WHAT THIS OBJECT REPRESENTS
+ This object represents an annotated image.
+ !*/
+
+ image() {}
+ image(const std::string& f) : filename(f) {}
+
+ std::string filename;
+ std::vector<box> boxes;
+ };
+
+ // ------------------------------------------------------------------------------------
+
+ struct dataset
+ {
+ /*!
+ WHAT THIS OBJECT REPRESENTS
+ This object represents a labeled set of images. In particular, it
+ contains the filename for each image as well as annotated boxes.
+ !*/
+
+ std::vector<image> images;
+ std::string comment;
+ std::string name;
+ };
+
+ // ------------------------------------------------------------------------------------
+
+ void save_image_dataset_metadata (
+ const dataset& meta,
+ const std::string& filename
+ );
+ /*!
+ ensures
+ - Writes the contents of the meta object to a file with the given
+ filename. The file will be in an XML format.
+ throws
+ - dlib::error
+ This exception is thrown if there is an error which prevents
+ this function from succeeding.
+ !*/
+
+ // ------------------------------------------------------------------------------------
+
+ void load_image_dataset_metadata (
+ dataset& meta,
+ const std::string& filename
+ );
+ /*!
+ ensures
+ - Attempts to interpret filename as a file containing XML formatted data
+ as produced by the save_image_dataset_metadata() function. Then
+ meta is loaded with the contents of the file.
+ throws
+ - dlib::error
+ This exception is thrown if there is an error which prevents
+ this function from succeeding.
+ !*/
+
+ // ------------------------------------------------------------------------------------
+
+ }
+}
+
+// ----------------------------------------------------------------------------------------
+
+#ifdef NO_MAKEFILE
+#include "image_dataset_metadata.cpp"
+#endif
+
+#endif // DLIB_IMAGE_DAtASET_METADATA_Hh_
+