mirror of https://github.com/davisking/dlib.git
Added the load_image_dataset() routine.
This commit is contained in:
parent
a3651eb5fc
commit
c95a2a6fe3
|
@ -6,6 +6,10 @@
|
||||||
#include "data_io/libsvm_io.h"
|
#include "data_io/libsvm_io.h"
|
||||||
#include "data_io/image_dataset_metadata.h"
|
#include "data_io/image_dataset_metadata.h"
|
||||||
|
|
||||||
|
#ifndef DLIB_ISO_CPP_ONLY
|
||||||
|
#include "data_io/load_image_dataset.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // DLIB_DATA_Io_HEADER
|
#endif // DLIB_DATA_Io_HEADER
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
// Copyright (C) 2012 Davis E. King (davis@dlib.net)
|
||||||
|
// License: Boost Software License See LICENSE.txt for the full license.
|
||||||
|
#ifndef DLIB_LOAD_IMAGE_DaTASET_H__
|
||||||
|
#define DLIB_LOAD_IMAGE_DaTASET_H__
|
||||||
|
|
||||||
|
#include "load_image_dataset_abstract.h"
|
||||||
|
#include "../misc_api.h"
|
||||||
|
#include "../dir_nav.h"
|
||||||
|
#include "../image_io.h"
|
||||||
|
#include "../array.h"
|
||||||
|
#include <vector>
|
||||||
|
#include "../geometry.h"
|
||||||
|
#include "image_dataset_metadata.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
namespace dlib
|
||||||
|
{
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
template <
|
||||||
|
typename image_type,
|
||||||
|
typename MM
|
||||||
|
>
|
||||||
|
void load_image_dataset (
|
||||||
|
array<image_type,MM>& images,
|
||||||
|
std::vector<std::vector<rectangle> >& object_locations,
|
||||||
|
const std::string& filename,
|
||||||
|
const std::string& label
|
||||||
|
)
|
||||||
|
{
|
||||||
|
images.clear();
|
||||||
|
object_locations.clear();
|
||||||
|
const std::string old_working_dir = get_current_dir();
|
||||||
|
|
||||||
|
// Set the current directory to be the one that contains the
|
||||||
|
// metadata file. We do this because the file might contain
|
||||||
|
// file paths which are relative to this folder.
|
||||||
|
const std::string parent_dir = get_parent_directory(file(filename)).full_name();
|
||||||
|
set_current_dir(parent_dir);
|
||||||
|
|
||||||
|
|
||||||
|
using namespace dlib::image_dataset_metadata;
|
||||||
|
|
||||||
|
dataset data;
|
||||||
|
load_image_dataset_metadata(data, filename);
|
||||||
|
|
||||||
|
images.resize(data.images.size());
|
||||||
|
std::vector<rectangle> rects;
|
||||||
|
for (unsigned long i = 0; i < data.images.size(); ++i)
|
||||||
|
{
|
||||||
|
load_image(images[i], data.images[i].filename);
|
||||||
|
rects.clear();
|
||||||
|
for (unsigned long j = 0; j < data.images[i].boxes.size(); ++j)
|
||||||
|
{
|
||||||
|
if (label.size() == 0 || data.images[i].boxes[j].label == label)
|
||||||
|
{
|
||||||
|
rects.push_back(data.images[i].boxes[j].rect);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
object_locations.push_back(rects);
|
||||||
|
}
|
||||||
|
|
||||||
|
set_current_dir(old_working_dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
template <typename image_type, typename MM>
|
||||||
|
void load_image_dataset (
|
||||||
|
array<image_type,MM>& images,
|
||||||
|
std::vector<std::vector<rectangle> >& object_locations,
|
||||||
|
const std::string& filename
|
||||||
|
)
|
||||||
|
{
|
||||||
|
load_image_dataset(images, object_locations, filename, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------------------
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // DLIB_LOAD_IMAGE_DaTASET_H__
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
// Copyright (C) 2012 Davis E. King (davis@dlib.net)
|
||||||
|
// License: Boost Software License See LICENSE.txt for the full license.
|
||||||
|
#undef DLIB_LOAD_IMAGE_DaTASET_ABSTRACT_H__
|
||||||
|
#ifdef DLIB_LOAD_IMAGE_DaTASET_ABSTRACT_H__
|
||||||
|
|
||||||
|
#include "load_image_dataset.h"
|
||||||
|
#include "../misc_api.h"
|
||||||
|
#include "../dir_nav.h"
|
||||||
|
#include "../image_io.h"
|
||||||
|
#include "../array.h"
|
||||||
|
#include <vector>
|
||||||
|
#include "../geometry.h"
|
||||||
|
#include "../image_dataset_metadata.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
|
namespace dlib
|
||||||
|
{
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
template <
|
||||||
|
typename image_type,
|
||||||
|
typename MM
|
||||||
|
>
|
||||||
|
void load_image_dataset (
|
||||||
|
array<image_type,MM>& images,
|
||||||
|
std::vector<std::vector<rectangle> >& object_locations,
|
||||||
|
const std::string& filename,
|
||||||
|
const std::string& label
|
||||||
|
);
|
||||||
|
/*!
|
||||||
|
ensures
|
||||||
|
- This routine loads the images and their associated object boxes from
|
||||||
|
the image metadata file indicated by filename. This metadata file
|
||||||
|
should be in the XML format used by the save_image_dataset_metadata()
|
||||||
|
routine.
|
||||||
|
- #images.size() == the number of images in the metadata file
|
||||||
|
- #images.size() == object_locations.size()
|
||||||
|
- This routine is capable of loading any image format which can be read
|
||||||
|
by the load_image() routine.
|
||||||
|
- for all valid i:
|
||||||
|
- #images[i] == a copy of the ith image from the dataset
|
||||||
|
- #object_locations[i] == a vector of all the rectangles associated with
|
||||||
|
#images[i].
|
||||||
|
- if (labels != "") then
|
||||||
|
- only boxes with the given label will be loaded into object_locations.
|
||||||
|
- else
|
||||||
|
- all boxes in the dataset will be loaded into object_locations
|
||||||
|
!*/
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
template <typename image_type, typename MM>
|
||||||
|
void load_image_dataset (
|
||||||
|
array<image_type,MM>& images,
|
||||||
|
std::vector<std::vector<rectangle> >& object_locations,
|
||||||
|
const std::string& filename
|
||||||
|
);
|
||||||
|
/*!
|
||||||
|
ensures
|
||||||
|
- performs: load_image_dataset(images, object_locations, filename, "");
|
||||||
|
(i.e. it ignores box labels and therefore loads all the boxes in the dataset)
|
||||||
|
!*/
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // DLIB_LOAD_IMAGE_DaTASET_ABSTRACT_H__
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue