mirror of https://github.com/davisking/dlib.git
Added the --add option to the imglab tool.
This commit is contained in:
parent
8fc2f43607
commit
5edb5662e0
|
@ -16,7 +16,7 @@
|
||||||
#include <dlib/dir_nav.h>
|
#include <dlib/dir_nav.h>
|
||||||
|
|
||||||
|
|
||||||
const char* VERSION = "0.6";
|
const char* VERSION = "0.7";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -228,6 +228,34 @@ void rename_labels (
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
void merge_metadata_files (
|
||||||
|
const command_line_parser& parser
|
||||||
|
)
|
||||||
|
{
|
||||||
|
image_dataset_metadata::dataset src, dest;
|
||||||
|
load_image_dataset_metadata(src, parser.option("add").argument(0));
|
||||||
|
load_image_dataset_metadata(dest, parser.option("add").argument(1));
|
||||||
|
|
||||||
|
std::map<string,image_dataset_metadata::image> merged_data;
|
||||||
|
for (unsigned long i = 0; i < dest.images.size(); ++i)
|
||||||
|
merged_data[dest.images[i].filename] = dest.images[i];
|
||||||
|
// now add in the src data and overwrite anything if there are duplicate entries.
|
||||||
|
for (unsigned long i = 0; i < src.images.size(); ++i)
|
||||||
|
merged_data[src.images[i].filename] = src.images[i];
|
||||||
|
|
||||||
|
// copy merged data into dest
|
||||||
|
dest.images.clear();
|
||||||
|
for (std::map<string,image_dataset_metadata::image>::const_iterator i = merged_data.begin();
|
||||||
|
i != merged_data.end(); ++i)
|
||||||
|
{
|
||||||
|
dest.images.push_back(i->second);
|
||||||
|
}
|
||||||
|
|
||||||
|
save_image_dataset_metadata(dest, "merged.xml");
|
||||||
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------------------------------
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -257,19 +285,25 @@ int main(int argc, char** argv)
|
||||||
"images with objects labeled <arg> and another file with all the other images. Additionally, the file "
|
"images with objects labeled <arg> and another file with all the other images. Additionally, the file "
|
||||||
"containing the <arg> labeled objects will not contain any other labels other than <arg>. "
|
"containing the <arg> labeled objects will not contain any other labels other than <arg>. "
|
||||||
"That is, the images in the first file are stripped of all labels other than the <arg> labels.",1);
|
"That is, the images in the first file are stripped of all labels other than the <arg> labels.",1);
|
||||||
|
parser.add_option("add", "Add the image metadata from <arg1> into <arg2>. If any of the image "
|
||||||
|
"tags are in both files then the ones in <arg2> are deleted and replaced with the "
|
||||||
|
"image tags from <arg1>. The results are saved into merged.xml and neither <arg1> or "
|
||||||
|
"<arg2> files are modified.",2);
|
||||||
|
|
||||||
parser.parse(argc, argv);
|
parser.parse(argc, argv);
|
||||||
|
|
||||||
const char* singles[] = {"h","c","r","l","convert","parts","rmdiff","seed", "shuffle", "split"};
|
const char* singles[] = {"h","c","r","l","convert","parts","rmdiff","seed", "shuffle", "split", "add"};
|
||||||
parser.check_one_time_options(singles);
|
parser.check_one_time_options(singles);
|
||||||
const char* c_sub_ops[] = {"r", "convert"};
|
const char* c_sub_ops[] = {"r", "convert"};
|
||||||
parser.check_sub_options("c", c_sub_ops);
|
parser.check_sub_options("c", c_sub_ops);
|
||||||
parser.check_sub_option("shuffle", "seed");
|
parser.check_sub_option("shuffle", "seed");
|
||||||
parser.check_incompatible_options("c", "l");
|
parser.check_incompatible_options("c", "l");
|
||||||
parser.check_incompatible_options("c", "rmdiff");
|
parser.check_incompatible_options("c", "rmdiff");
|
||||||
|
parser.check_incompatible_options("c", "add");
|
||||||
parser.check_incompatible_options("c", "rename");
|
parser.check_incompatible_options("c", "rename");
|
||||||
parser.check_incompatible_options("c", "parts");
|
parser.check_incompatible_options("c", "parts");
|
||||||
parser.check_incompatible_options("l", "rename");
|
parser.check_incompatible_options("l", "rename");
|
||||||
|
parser.check_incompatible_options("l", "add");
|
||||||
parser.check_incompatible_options("l", "parts");
|
parser.check_incompatible_options("l", "parts");
|
||||||
parser.check_incompatible_options("convert", "l");
|
parser.check_incompatible_options("convert", "l");
|
||||||
parser.check_incompatible_options("convert", "rename");
|
parser.check_incompatible_options("convert", "rename");
|
||||||
|
@ -286,6 +320,12 @@ int main(int argc, char** argv)
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parser.option("add"))
|
||||||
|
{
|
||||||
|
merge_metadata_files(parser);
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
if (parser.option("v"))
|
if (parser.option("v"))
|
||||||
{
|
{
|
||||||
cout << "imglab v" << VERSION
|
cout << "imglab v" << VERSION
|
||||||
|
|
Loading…
Reference in New Issue