Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
D
dlib
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
钟尚武
dlib
Commits
9db07ff3
Commit
9db07ff3
authored
Jun 18, 2011
by
Davis King
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added some code so create initial image lists
parent
b78f1cb8
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
189 additions
and
1 deletion
+189
-1
main.cpp
tools/imglab/src/main.cpp
+189
-1
No files found.
tools/imglab/src/main.cpp
View file @
9db07ff3
#include <iostream>
#include <iostream>
#include <fstream>
#include <fstream>
#include <string>
#include <dlib/cmd_line_parser.h>
#include <dlib/cmd_line_parser.h>
#include <dlib/geometry.h>
#include <sstream>
#include <dlib/compress_stream.h>
#include <dlib/base64.h>
using
namespace
std
;
using
namespace
std
;
using
namespace
dlib
;
using
namespace
dlib
;
// ----------------------------------------------------------------------------------------
namespace
dlib
{
namespace
imglab
{
struct
box
{
box
()
:
head
(
-
0xFFFF
,
-
0xFFFF
)
{}
rectangle
rect
;
// optional fields
std
::
string
label
;
point
head
;
// a value of (-0xFFFF,-0xFFFF) indicates the field not supplied
bool
has_head
()
const
{
return
head
!=
point
(
-
0xFFFF
,
-
0xFFFF
);
}
bool
has_label
()
const
{
return
label
.
size
()
!=
0
;
}
};
struct
image
{
image
()
{}
image
(
const
std
::
string
&
f
)
:
filename
(
f
)
{}
std
::
string
filename
;
std
::
vector
<
box
>
boxes
;
};
struct
image_dataset_metadata
{
std
::
vector
<
image
>
images
;
std
::
string
comment
;
std
::
string
name
;
};
// ------------------------------------------------------------------------------------
const
std
::
string
get_decoded_string
();
void
create_image_metadata_stylesheet_file
()
{
ofstream
fout
(
"image_metadata_stylesheet.xsl"
);
if
(
!
fout
)
throw
dlib
::
error
(
"ERROR: Unable to open image_metadata_stylesheet.xsl for writing."
);
fout
<<
get_decoded_string
();
if
(
!
fout
)
throw
dlib
::
error
(
"ERROR: Unable to write to image_metadata_stylesheet.xsl."
);
}
void
save_image_dataset_metadata
(
const
image_dataset_metadata
&
metadata
,
const
std
::
string
&
filename
)
{
create_image_metadata_stylesheet_file
();
const
std
::
vector
<
image
>&
images
=
metadata
.
images
;
ofstream
fout
(
filename
.
c_str
());
if
(
!
fout
)
throw
dlib
::
error
(
"ERROR: Unable to open "
+
filename
+
" for writing."
);
fout
<<
"<?xml version='1.0' encoding='ISO-8859-1'?>
\n
"
;
fout
<<
"<?xml-stylesheet type='text/xsl' href='image_metadata_stylesheet.xsl'?>
\n
"
;
fout
<<
"<dataset>
\n
"
;
fout
<<
"<name>"
<<
metadata
.
name
<<
"</name>
\n
"
;
fout
<<
"<comment>"
<<
metadata
.
comment
<<
"</comment>
\n
"
;
fout
<<
"<images>
\n
"
;
for
(
unsigned
long
i
=
0
;
i
<
images
.
size
();
++
i
)
{
fout
<<
" <image file='"
<<
images
[
i
].
filename
<<
"'>
\n
"
;
// save all the boxes
for
(
unsigned
long
j
=
0
;
j
<
images
[
i
].
boxes
.
size
();
++
j
)
{
const
box
&
b
=
images
[
i
].
boxes
[
j
];
fout
<<
" <box top='"
<<
b
.
rect
.
top
()
<<
"' "
<<
"left='"
<<
b
.
rect
.
left
()
<<
"' "
<<
"width='"
<<
b
.
rect
.
width
()
<<
"' "
<<
"height='"
<<
b
.
rect
.
height
()
<<
"'>
\n
"
;
if
(
b
.
has_label
())
fout
<<
" <label>"
<<
b
.
label
<<
"</label>
\n
"
;
if
(
b
.
has_head
())
fout
<<
" <head x='"
<<
b
.
head
.
x
()
<<
"' y='"
<<
b
.
head
.
y
()
<<
"'/>
\n
"
;
fout
<<
" </box>
\n
"
;
}
fout
<<
" </image>
\n
"
;
if
(
!
fout
)
throw
dlib
::
error
(
"ERROR: Unable to write to "
+
filename
+
"."
);
}
fout
<<
"</images>"
;
fout
<<
"</dataset>"
;
}
// ------------------------------------------------------------------------------------
void
load_image_dataset_metadata
(
image_dataset_metadata
&
images
,
const
std
::
string
&
filename
)
{
}
// ------------------------------------------------------------------------------------
// This function returns the contents of the file 'images.xsl'
const
std
::
string
get_decoded_string
()
{
dlib
::
base64
base64_coder
;
dlib
::
compress_stream
::
kernel_1ea
compressor
;
std
::
ostringstream
sout
;
std
::
istringstream
sin
;
// The base64 encoded data from the file 'image_metadata_stylesheet.xsl' we want to decode and return.
sout
<<
"PFWfgmWfCHr1DkV63lbjjeY2dCc2FbHDOVh0Kd7dkvaOfRYrOG24f0x77/5iMVq8FtE3UBxtGwSd"
;
sout
<<
"1ZHOHRSHgieNoeBv8ssJQ75RRxYtFKRY3OTPX5eKQoCN9jUaUnHnR4QZtEHgmKqXSs50Yrdd+2Ah"
;
sout
<<
"gNyarPZCiR6nvqNvCjtP2MP5FxleqNf8Fylatm2KdsXmrv5K87LYVN7i7JMkmZ++cTXYSOxDmxZi"
;
sout
<<
"OiCH8funXUdF9apDW547gCjz9HOQUI6dkz5dYUeFjfp6dFugpnaJyyprFLKq048Qk7+QiL4CNF/G"
;
sout
<<
"7e0VpBw8dMpiyRNi2fSQGSZGfIAUQKKT6+rPwQoRH2spdjsdXVWj4XQAqBX87nmqMnqjMhn/Vd1s"
;
sout
<<
"W5aoC0drwRGu3Xe3gn9vBL8hBkRXcKndVwPFMPUeADJ2Z2tc8cb9MqwkOCPBKdfQ+w24u/kvjdsQ"
;
sout
<<
"Kq20+MI2uPOSGbCebui/yMveNYUeot5b4s+ZyRIdcbURUHlQQ68BZQVj0WTw+8ohK7VUpjidF/T+"
;
sout
<<
"gawZzSnr/HrocEedQL7DyjyVuC03qoFGlwe6Q/4ynndgscVhXyVleneSpOlx/CGOlBKXzwyEpEi8"
;
sout
<<
"JV4kPhoJ21N5va7iyDgxuikbDT94tFYje9GtXQOPGPERKzxnp6dCor3a5dPLOfmVsvAdEDtr7B3e"
;
sout
<<
"WJpFbfD4XtFfllWmwxggCqyfvz/q7kMQzhsH623CLRDre9AsIRg830e6T992uKgtXx8QM4GPhsjc"
;
sout
<<
"leFCNzwDqpeORW7oJ72COj3pgGIn2/BGDWrr1oqu0ACKy7vY32VcgvyFcWbqqdEX71SQ9LcxCbet"
;
sout
<<
"iwrBJY8n//Whq55kD0hpSffmW+uup6sV8sbAI7rwnCYpfUNQHXgN+5sLot67jhO03FlafaEmrgfT"
;
sout
<<
"XKjBU+z64tCCy1uwJj8gx0CBVFhr8MPzGkKp3rAaeKzVYZJbC2TkZPL+PMjohL0SDhaXxiwX+pKo"
;
sout
<<
"VHNRqCmlnrxmB6kikuS5zN5Z6feHW6KNhhcEKuXvDawYNlppJvMt1lE0Q9oKx+JL3Atlm+V8/Q2R"
;
sout
<<
"fI5DQAaCaxMXdzJcDfNPMHOIcYlkQPIk9cdLqScrbFu9VjFpqGyGoTGOUiiJP4d3peJvEbRgZZ8d"
;
sout
<<
"SUaF4cycZh4yRSI06rrTGi3wyS5HjRFgS+giS2p0ZUi+7YAt1opbkDhcovTxZGUkuavZBCsjZw3C"
;
sout
<<
"1CNGurdvhw9mOOL9JY3Vn/wfb9t4ScwaGGrUoeyZHXMARoHYVF1ST7gGOHL2qMRMdXr+k0P3OLxO"
;
sout
<<
"4DVe0r3v93vpyqd5KgA="
;
// Put the data into the istream sin
sin
.
str
(
sout
.
str
());
sout
.
str
(
""
);
// Decode the base64 text into its compressed binary form
base64_coder
.
decode
(
sin
,
sout
);
sin
.
clear
();
sin
.
str
(
sout
.
str
());
sout
.
str
(
""
);
// Decompress the data into its original form
compressor
.
decompress
(
sin
,
sout
);
// Return the decoded and decompressed data
return
sout
.
str
();
}
}
}
// ----------------------------------------------------------------------------------------
int
main
(
int
argc
,
char
**
argv
)
int
main
(
int
argc
,
char
**
argv
)
{
{
try
try
...
@@ -17,11 +190,15 @@ int main(int argc, char** argv)
...
@@ -17,11 +190,15 @@ int main(int argc, char** argv)
parser
.
add_option
(
"h"
,
"Displays this information."
);
parser
.
add_option
(
"h"
,
"Displays this information."
);
parser
.
add_option
(
"c"
,
"Create an XML file named <arg> listing a set of images."
,
1
);
parser
.
add_option
(
"c"
,
"Create an XML file named <arg> listing a set of images."
,
1
);
parser
.
add_option
(
"d"
,
"Include all images files in directory <arg> in the new image file list."
,
1
);
parser
.
add_option
(
"r"
,
"Search directories recursively for images."
);
parser
.
parse
(
argc
,
argv
);
parser
.
parse
(
argc
,
argv
);
const
char
*
singles
[]
=
{
"h"
,
"c"
};
const
char
*
singles
[]
=
{
"h"
,
"c"
,
"r"
};
parser
.
check_one_time_options
(
singles
);
parser
.
check_one_time_options
(
singles
);
parser
.
check_sub_option
(
"c"
,
"d"
);
parser
.
check_sub_option
(
"d"
,
"r"
);
if
(
parser
.
option
(
"h"
))
if
(
parser
.
option
(
"h"
))
{
{
...
@@ -33,6 +210,17 @@ int main(int argc, char** argv)
...
@@ -33,6 +210,17 @@ int main(int argc, char** argv)
if
(
parser
.
option
(
"c"
))
if
(
parser
.
option
(
"c"
))
{
{
using
namespace
dlib
::
imglab
;
image_dataset_metadata
metadata
;
metadata
.
name
=
"imglab dataset"
;
metadata
.
comment
=
"Created by imglab tool."
;
for
(
unsigned
long
i
=
0
;
i
<
parser
.
number_of_arguments
();
++
i
)
{
metadata
.
images
.
push_back
(
image
(
parser
[
i
]));
}
save_image_dataset_metadata
(
metadata
,
parser
.
option
(
"c"
).
argument
());
return
EXIT_SUCCESS
;
return
EXIT_SUCCESS
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment