From b485aab7e71c1625cfc27e0f92c9509f42378458 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 5 May 2024 13:19:16 +0200 Subject: Adding upstream version 1.45.3+dfsg. Signed-off-by: Daniel Baumann --- ml/dlib/tools/imglab/src/convert_pascal_v1.cpp | 177 ------------------------- 1 file changed, 177 deletions(-) delete mode 100644 ml/dlib/tools/imglab/src/convert_pascal_v1.cpp (limited to 'ml/dlib/tools/imglab/src/convert_pascal_v1.cpp') diff --git a/ml/dlib/tools/imglab/src/convert_pascal_v1.cpp b/ml/dlib/tools/imglab/src/convert_pascal_v1.cpp deleted file mode 100644 index 8eaf5e2bb..000000000 --- a/ml/dlib/tools/imglab/src/convert_pascal_v1.cpp +++ /dev/null @@ -1,177 +0,0 @@ - -#include "convert_pascal_v1.h" -#include "dlib/data_io.h" -#include -#include -#include -#include - -using namespace std; -using namespace dlib; - -namespace -{ - using namespace dlib::image_dataset_metadata; - -// ---------------------------------------------------------------------------------------- - - std::string pick_out_quoted_string ( - const std::string& str - ) - { - std::string temp; - bool in_quotes = false; - for (unsigned long i = 0; i < str.size(); ++i) - { - if (str[i] == '"') - { - in_quotes = !in_quotes; - } - else if (in_quotes) - { - temp += str[i]; - } - } - - return temp; - } - -// ---------------------------------------------------------------------------------------- - - void parse_annotation_file( - const std::string& file, - dlib::image_dataset_metadata::image& img, - std::string& dataset_name - ) - { - ifstream fin(file.c_str()); - if (!fin) - throw dlib::error("Unable to open file " + file); - - img = dlib::image_dataset_metadata::image(); - - string str, line; - std::vector words; - while (fin.peek() != EOF) - { - getline(fin, line); - words = split(line, " \r\n\t:(,-)\""); - if (words.size() > 2) - { - if (words[0] == "#") - continue; - - if (words[0] == "Image" && words[1] == "filename") - { - img.filename = pick_out_quoted_string(line); - } - else if (words[0] == "Database") - { - dataset_name = pick_out_quoted_string(line); - } - else if (words[0] == "Objects" && words[1] == "with" && words.size() >= 5) - { - const int num = sa = words[4]; - img.boxes.resize(num); - } - else if (words.size() > 4 && (words[2] == "for" || words[2] == "on") && words[3] == "object") - { - long idx = sa = words[4]; - --idx; - if (idx >= (long)img.boxes.size()) - throw dlib::error("Invalid object id number of " + words[4]); - - if (words[0] == "Center" && words[1] == "point" && words.size() > 9) - { - const long x = sa = words[8]; - const long y = sa = words[9]; - img.boxes[idx].parts["head"] = point(x,y); - } - else if (words[0] == "Bounding" && words[1] == "box" && words.size() > 13) - { - rectangle rect; - img.boxes[idx].rect.left() = sa = words[10]; - img.boxes[idx].rect.top() = sa = words[11]; - img.boxes[idx].rect.right() = sa = words[12]; - img.boxes[idx].rect.bottom() = sa = words[13]; - } - else if (words[0] == "Original" && words[1] == "label" && words.size() > 6) - { - img.boxes[idx].label = words[6]; - } - } - } - - } - } - -// ---------------------------------------------------------------------------------------- - - std::string figure_out_full_path_to_image ( - const std::string& annotation_file, - const std::string& image_name - ) - { - directory parent = get_parent_directory(file(annotation_file)); - - - string temp; - while (true) - { - if (parent.is_root()) - temp = parent.full_name() + image_name; - else - temp = parent.full_name() + directory::get_separator() + image_name; - - if (file_exists(temp)) - return temp; - - if (parent.is_root()) - throw dlib::error("Can't figure out where the file " + image_name + " is located."); - parent = get_parent_directory(parent); - } - } - -// ---------------------------------------------------------------------------------------- - -} - -void convert_pascal_v1( - const command_line_parser& parser -) -{ - cout << "Convert from PASCAL v1.00 annotation format..." << endl; - - dlib::image_dataset_metadata::dataset dataset; - - std::string name; - dlib::image_dataset_metadata::image img; - - const std::string filename = parser.option("c").argument(); - // make sure the file exists so we can use the get_parent_directory() command to - // figure out it's parent directory. - make_empty_file(filename); - const std::string parent_dir = get_parent_directory(file(filename)).full_name(); - - for (unsigned long i = 0; i < parser.number_of_arguments(); ++i) - { - try - { - parse_annotation_file(parser[i], img, name); - - dataset.name = name; - img.filename = strip_path(figure_out_full_path_to_image(parser[i], img.filename), parent_dir); - dataset.images.push_back(img); - - } - catch (exception& ) - { - cout << "Error while processing file " << parser[i] << endl << endl; - throw; - } - } - - save_image_dataset_metadata(dataset, filename); -} - - -- cgit v1.2.3