// Copyright (C) 2011 Davis E. King ([email protected]) | |
// License: Boost Software License See LICENSE.txt for the full license. | |
// ---------------------------------------------------------------------------------------- | |
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. | |
!*/ | |
// ------------------------------------------------------------------------------------ | |
} | |
} | |
// ---------------------------------------------------------------------------------------- | |