Commit c13ca8eb authored by Davis King's avatar Davis King

Just moved code around to clean things up a little.

parent 09b31219
......@@ -26,6 +26,7 @@ add_executable(${target_name}
src/common.h
src/common.cpp
src/cluster.cpp
src/flip_dataset.cpp
)
......
......@@ -38,3 +38,23 @@ void make_empty_file (
// ----------------------------------------------------------------------------------------
std::string to_png_name (const std::string& filename)
{
std::string::size_type pos = filename.find_last_of(".");
if (pos == std::string::npos)
throw dlib::error("invalid filename: " + filename);
return filename.substr(0,pos) + ".png";
}
// ----------------------------------------------------------------------------------------
std::string to_jpg_name (const std::string& filename)
{
std::string::size_type pos = filename.find_last_of(".");
if (pos == std::string::npos)
throw dlib::error("invalid filename: " + filename);
return filename.substr(0,pos) + ".jpg";
}
// ----------------------------------------------------------------------------------------
......@@ -32,5 +32,14 @@ void make_empty_file (
// ----------------------------------------------------------------------------------------
std::string to_png_name (const std::string& filename);
std::string to_jpg_name (const std::string& filename);
// ----------------------------------------------------------------------------------------
const int JPEG_QUALITY = 90;
// ----------------------------------------------------------------------------------------
#endif // DLIB_IMGLAB_COmMON_H__
// Copyright (C) 2011 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#include "flip_dataset.h"
#include <dlib/data_io.h>
#include <dlib/dir_nav.h>
#include <string>
#include "common.h"
#include <dlib/image_transforms.h>
using namespace dlib;
using namespace std;
// ----------------------------------------------------------------------------------------
void flip_dataset(const command_line_parser& parser)
{
image_dataset_metadata::dataset metadata;
const string datasource = parser.option("flip").argument();
load_image_dataset_metadata(metadata,datasource);
// 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.
set_current_dir(get_parent_directory(file(datasource)));
const string metadata_filename = get_parent_directory(file(datasource)).full_name() +
directory::get_separator() + "flipped_" + file(datasource).name();
array2d<rgb_pixel> img, temp;
for (unsigned long i = 0; i < metadata.images.size(); ++i)
{
file f(metadata.images[i].filename);
string filename = get_parent_directory(f).full_name() + directory::get_separator() + "flipped_" + to_png_name(f.name());
load_image(img, metadata.images[i].filename);
flip_image_left_right(img, temp);
if (parser.option("jpg"))
{
filename = to_jpg_name(filename);
save_jpeg(temp, filename,JPEG_QUALITY);
}
else
{
save_png(temp, filename);
}
for (unsigned long j = 0; j < metadata.images[i].boxes.size(); ++j)
{
metadata.images[i].boxes[j].rect = impl::flip_rect_left_right(metadata.images[i].boxes[j].rect, get_rect(img));
// flip all the object parts
std::map<std::string,point>::iterator k;
for (k = metadata.images[i].boxes[j].parts.begin(); k != metadata.images[i].boxes[j].parts.end(); ++k)
{
k->second = impl::flip_rect_left_right(rectangle(k->second,k->second), get_rect(img)).tl_corner();
}
}
metadata.images[i].filename = filename;
}
save_image_dataset_metadata(metadata, metadata_filename);
}
// ----------------------------------------------------------------------------------------
// Copyright (C) 2011 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#ifndef DLIB_IMGLAB_FLIP_DaTASET_H__
#define DLIB_IMGLAB_FLIP_DaTASET_H__
#include <dlib/cmd_line_parser.h>
void flip_dataset(const dlib::command_line_parser& parser);
#endif // DLIB_IMGLAB_FLIP_DaTASET_H__
......@@ -6,6 +6,7 @@
#include "convert_pascal_v1.h"
#include "convert_idl.h"
#include "cluster.h"
#include "flip_dataset.h"
#include <dlib/cmd_line_parser.h>
#include <dlib/image_transforms.h>
#include <dlib/svm.h>
......@@ -22,7 +23,6 @@
const char* VERSION = "1.12";
const int JPEG_QUALITY = 90;
using namespace std;
......@@ -268,77 +268,6 @@ void merge_metadata_files (
// ----------------------------------------------------------------------------------------
string to_png_name (const string& filename)
{
string::size_type pos = filename.find_last_of(".");
if (pos == string::npos)
throw dlib::error("invalid filename: " + filename);
return filename.substr(0,pos) + ".png";
}
string to_jpg_name (const string& filename)
{
string::size_type pos = filename.find_last_of(".");
if (pos == string::npos)
throw dlib::error("invalid filename: " + filename);
return filename.substr(0,pos) + ".jpg";
}
// ----------------------------------------------------------------------------------------
void flip_dataset(const command_line_parser& parser)
{
image_dataset_metadata::dataset metadata;
const string datasource = parser.option("flip").argument();
load_image_dataset_metadata(metadata,datasource);
// 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.
set_current_dir(get_parent_directory(file(datasource)));
const string metadata_filename = get_parent_directory(file(datasource)).full_name() +
directory::get_separator() + "flipped_" + file(datasource).name();
array2d<rgb_pixel> img, temp;
for (unsigned long i = 0; i < metadata.images.size(); ++i)
{
file f(metadata.images[i].filename);
string filename = get_parent_directory(f).full_name() + directory::get_separator() + "flipped_" + to_png_name(f.name());
load_image(img, metadata.images[i].filename);
flip_image_left_right(img, temp);
if (parser.option("jpg"))
{
filename = to_jpg_name(filename);
save_jpeg(temp, filename,JPEG_QUALITY);
}
else
{
save_png(temp, filename);
}
for (unsigned long j = 0; j < metadata.images[i].boxes.size(); ++j)
{
metadata.images[i].boxes[j].rect = impl::flip_rect_left_right(metadata.images[i].boxes[j].rect, get_rect(img));
// flip all the object parts
std::map<std::string,point>::iterator k;
for (k = metadata.images[i].boxes[j].parts.begin(); k != metadata.images[i].boxes[j].parts.end(); ++k)
{
k->second = impl::flip_rect_left_right(rectangle(k->second,k->second), get_rect(img)).tl_corner();
}
}
metadata.images[i].filename = filename;
}
save_image_dataset_metadata(metadata, metadata_filename);
}
// ----------------------------------------------------------------------------------------
void rotate_dataset(const command_line_parser& parser)
{
image_dataset_metadata::dataset metadata;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment