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
e0f7b41a
Commit
e0f7b41a
authored
Jan 26, 2015
by
Davis King
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added the drectangle object and switched a few interpolation related APIs over
to use it.
parent
e485838b
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
451 additions
and
77 deletions
+451
-77
geometry.h
dlib/geometry.h
+1
-0
drectangle.h
dlib/geometry/drectangle.h
+373
-0
drectangle_abstract.h
dlib/geometry/drectangle_abstract.h
+0
-0
image_pyramid.h
dlib/image_transforms/image_pyramid.h
+48
-48
image_pyramid_abstract.h
dlib/image_transforms/image_pyramid_abstract.h
+12
-12
interpolation.h
dlib/image_transforms/interpolation.h
+11
-11
interpolation_abstract.h
dlib/image_transforms/interpolation_abstract.h
+6
-6
No files found.
dlib/geometry.h
View file @
e0f7b41a
...
@@ -4,6 +4,7 @@
...
@@ -4,6 +4,7 @@
#define DLIB_GEOMETRy_HEADER
#define DLIB_GEOMETRy_HEADER
#include "geometry/rectangle.h"
#include "geometry/rectangle.h"
#include "geometry/drectangle.h"
#include "geometry/vector.h"
#include "geometry/vector.h"
#include "geometry/border_enumerator.h"
#include "geometry/border_enumerator.h"
#include "geometry/point_transforms.h"
#include "geometry/point_transforms.h"
...
...
dlib/geometry/drectangle.h
0 → 100644
View file @
e0f7b41a
// Copyright (C) 2015 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#ifndef DLIB_DRECTANGLe_
#define DLIB_DRECTANGLe_
#include "drectangle_abstract.h"
#include "rectangle.h"
namespace
dlib
{
class
drectangle
;
drectangle
operator
*
(
const
drectangle
&
rect
,
const
double
&
scale
);
// ----------------------------------------------------------------------------------------
class
drectangle
{
public
:
drectangle
(
)
:
l
(
0
),
t
(
0
),
r
(
-
1
),
b
(
-
1
)
{}
drectangle
(
double
l_
,
double
t_
,
double
r_
,
double
b_
)
:
l
(
l_
),
t
(
t_
),
r
(
r_
),
b
(
b_
)
{}
drectangle
(
const
dlib
::
vector
<
double
,
2
>&
p
)
:
l
(
p
.
x
()),
t
(
p
.
y
()),
r
(
p
.
x
()),
b
(
p
.
y
())
{
}
template
<
typename
T
,
typename
U
>
drectangle
(
const
vector
<
T
,
2
>&
p1
,
const
vector
<
U
,
2
>&
p2
)
{
*
this
=
drectangle
(
p1
)
+
drectangle
(
p2
);
}
drectangle
(
const
rectangle
&
rect
)
:
l
(
rect
.
left
()),
t
(
rect
.
top
()),
r
(
rect
.
right
()),
b
(
rect
.
bottom
())
{}
operator
rectangle
(
)
const
{
return
rectangle
((
long
)
std
::
floor
(
l
+
0
.
5
),
(
long
)
std
::
floor
(
t
+
0
.
5
),
(
long
)
std
::
floor
(
r
+
0
.
5
),
(
long
)
std
::
floor
(
b
+
0
.
5
));
}
double
left
()
const
{
return
l
;
}
double
top
()
const
{
return
t
;
}
double
right
()
const
{
return
r
;
}
double
bottom
()
const
{
return
b
;
}
double
&
left
()
{
return
l
;
}
double
&
top
()
{
return
t
;
}
double
&
right
()
{
return
r
;
}
double
&
bottom
()
{
return
b
;
}
const
dlib
::
vector
<
double
,
2
>
tl_corner
(
)
const
{
return
dlib
::
vector
<
double
,
2
>
(
left
(),
top
());
}
const
dlib
::
vector
<
double
,
2
>
bl_corner
(
)
const
{
return
dlib
::
vector
<
double
,
2
>
(
left
(),
bottom
());
}
const
dlib
::
vector
<
double
,
2
>
tr_corner
(
)
const
{
return
dlib
::
vector
<
double
,
2
>
(
right
(),
top
());
}
const
dlib
::
vector
<
double
,
2
>
br_corner
(
)
const
{
return
dlib
::
vector
<
double
,
2
>
(
right
(),
bottom
());
}
double
width
(
)
const
{
if
(
is_empty
())
return
0
;
else
return
r
-
l
;
}
double
height
(
)
const
{
if
(
is_empty
())
return
0
;
else
return
b
-
t
;
}
double
area
(
)
const
{
return
width
()
*
height
();
}
bool
is_empty
(
)
const
{
return
(
t
>
b
||
l
>
r
);
}
drectangle
operator
+
(
const
drectangle
&
rhs
)
const
{
if
(
rhs
.
is_empty
())
return
*
this
;
else
if
(
is_empty
())
return
rhs
;
return
drectangle
(
std
::
min
(
l
,
rhs
.
l
),
std
::
min
(
t
,
rhs
.
t
),
std
::
max
(
r
,
rhs
.
r
),
std
::
max
(
b
,
rhs
.
b
)
);
}
drectangle
intersect
(
const
drectangle
&
rhs
)
const
{
return
drectangle
(
std
::
max
(
l
,
rhs
.
l
),
std
::
max
(
t
,
rhs
.
t
),
std
::
min
(
r
,
rhs
.
r
),
std
::
min
(
b
,
rhs
.
b
)
);
}
bool
contains
(
const
dlib
::
vector
<
double
,
2
>&
p
)
const
{
if
(
p
.
x
()
<
l
||
p
.
x
()
>
r
||
p
.
y
()
<
t
||
p
.
y
()
>
b
)
return
false
;
return
true
;
}
bool
contains
(
const
drectangle
&
rect
)
const
{
if
(
rect
.
is_empty
())
return
true
;
if
(
l
<=
rect
.
left
()
&&
r
>=
rect
.
right
()
&&
t
<=
rect
.
top
()
&&
b
>=
rect
.
bottom
())
return
true
;
return
false
;
}
drectangle
&
operator
*=
(
const
double
&
scale
)
{
*
this
=
*
this
*
scale
;
return
*
this
;
}
drectangle
&
operator
/=
(
const
double
&
scale
)
{
*
this
=
*
this
*
(
1
.
0
/
scale
);
return
*
this
;
}
private
:
double
l
;
double
t
;
double
r
;
double
b
;
};
// ----------------------------------------------------------------------------------------
inline
void
serialize
(
const
drectangle
&
item
,
std
::
ostream
&
out
)
{
try
{
serialize
(
item
.
left
(),
out
);
serialize
(
item
.
top
(),
out
);
serialize
(
item
.
right
(),
out
);
serialize
(
item
.
bottom
(),
out
);
}
catch
(
serialization_error
&
e
)
{
throw
serialization_error
(
e
.
info
+
"
\n
while serializing an object of type drectangle"
);
}
}
inline
void
deserialize
(
drectangle
&
item
,
std
::
istream
&
in
)
{
try
{
deserialize
(
item
.
left
(),
in
);
deserialize
(
item
.
top
(),
in
);
deserialize
(
item
.
right
(),
in
);
deserialize
(
item
.
bottom
(),
in
);
}
catch
(
serialization_error
&
e
)
{
throw
serialization_error
(
e
.
info
+
"
\n
while deserializing an object of type drectangle"
);
}
}
inline
std
::
ostream
&
operator
<<
(
std
::
ostream
&
out
,
const
drectangle
&
item
)
{
out
<<
"[("
<<
item
.
left
()
<<
", "
<<
item
.
top
()
<<
") ("
<<
item
.
right
()
<<
", "
<<
item
.
bottom
()
<<
")]"
;
return
out
;
}
inline
std
::
istream
&
operator
>>
(
std
::
istream
&
in
,
drectangle
&
item
)
{
// ignore any whitespace
while
(
in
.
peek
()
==
' '
||
in
.
peek
()
==
'\t'
||
in
.
peek
()
==
'\r'
||
in
.
peek
()
==
'\n'
)
in
.
get
();
// now eat the leading '[' character
if
(
in
.
get
()
!=
'['
)
{
in
.
setstate
(
in
.
rdstate
()
|
std
::
ios
::
failbit
);
return
in
;
}
dlib
::
vector
<
double
,
2
>
p1
,
p2
;
in
>>
p1
;
in
>>
p2
;
item
=
drectangle
(
p1
)
+
drectangle
(
p2
);
// ignore any whitespace
while
(
in
.
peek
()
==
' '
||
in
.
peek
()
==
'\t'
||
in
.
peek
()
==
'\r'
||
in
.
peek
()
==
'\n'
)
in
.
get
();
// now eat the trailing ']' character
if
(
in
.
get
()
!=
']'
)
{
in
.
setstate
(
in
.
rdstate
()
|
std
::
ios
::
failbit
);
}
return
in
;
}
// ----------------------------------------------------------------------------------------
inline
dlib
::
vector
<
double
,
2
>
center
(
const
drectangle
&
rect
)
{
dlib
::
vector
<
double
,
2
>
temp
(
rect
.
left
()
+
rect
.
right
(),
rect
.
top
()
+
rect
.
bottom
());
return
temp
/
2
.
0
;
}
inline
dlib
::
vector
<
double
,
2
>
dcenter
(
const
drectangle
&
rect
)
{
return
center
(
rect
);
}
inline
drectangle
operator
*
(
const
drectangle
&
rect
,
const
double
&
scale
)
{
const
double
width
=
rect
.
width
()
*
scale
;
const
double
height
=
rect
.
height
()
*
scale
;
const
dlib
::
vector
<
double
,
2
>
p
=
center
(
rect
);
return
drectangle
(
p
.
x
()
-
width
/
2
,
p
.
y
()
-
height
/
2
,
p
.
x
()
+
width
/
2
,
p
.
y
()
+
height
/
2
);
}
inline
drectangle
operator
*
(
const
double
&
scale
,
const
drectangle
&
rect
)
{
return
rect
*
scale
;
}
inline
drectangle
operator
/
(
const
drectangle
&
rect
,
const
double
&
scale
)
{
return
rect
*
(
1
.
0
/
scale
);
}
inline
drectangle
operator
+
(
const
drectangle
&
r
,
const
dlib
::
vector
<
double
,
2
>&
p
)
{
return
r
+
drectangle
(
p
);
}
inline
drectangle
operator
+
(
const
dlib
::
vector
<
double
,
2
>&
p
,
const
drectangle
&
r
)
{
return
r
+
drectangle
(
p
);
}
inline
drectangle
translate_rect
(
const
drectangle
&
rect
,
const
dlib
::
vector
<
double
,
2
>&
p
)
{
drectangle
result
;
result
.
top
()
=
rect
.
top
()
+
p
.
y
();
result
.
bottom
()
=
rect
.
bottom
()
+
p
.
y
();
result
.
left
()
=
rect
.
left
()
+
p
.
x
();
result
.
right
()
=
rect
.
right
()
+
p
.
x
();
return
result
;
}
inline
drectangle
intersect
(
const
drectangle
&
a
,
const
drectangle
&
b
)
{
return
a
.
intersect
(
b
);
}
inline
double
area
(
const
drectangle
&
a
)
{
return
a
.
area
();
}
inline
drectangle
centered_drect
(
const
dlib
::
vector
<
double
,
2
>&
p
,
const
double
&
width
,
const
double
&
height
)
{
return
drectangle
(
p
.
x
()
-
width
/
2
,
p
.
y
()
-
height
/
2
,
p
.
x
()
+
width
/
2
,
p
.
y
()
+
height
/
2
);
}
// ----------------------------------------------------------------------------------------
}
#endif // DLIB_DRECTANGLe_
dlib/geometry/drectangle_abstract.h
0 → 100644
View file @
e0f7b41a
This diff is collapsed.
Click to expand it.
dlib/image_transforms/image_pyramid.h
View file @
e0f7b41a
...
@@ -62,36 +62,36 @@ namespace dlib
...
@@ -62,36 +62,36 @@ namespace dlib
// -----------------------------
// -----------------------------
rectangle
rect_up
(
d
rectangle
rect_up
(
const
rectangle
&
rect
const
d
rectangle
&
rect
)
const
)
const
{
{
return
rectangle
(
point_up
(
rect
.
tl_corner
()),
point_up
(
rect
.
br_corner
()));
return
d
rectangle
(
point_up
(
rect
.
tl_corner
()),
point_up
(
rect
.
br_corner
()));
}
}
rectangle
rect_up
(
d
rectangle
rect_up
(
const
rectangle
&
rect
,
const
d
rectangle
&
rect
,
unsigned
int
levels
unsigned
int
levels
)
const
)
const
{
{
return
rectangle
(
point_up
(
rect
.
tl_corner
(),
levels
),
point_up
(
rect
.
br_corner
(),
levels
));
return
d
rectangle
(
point_up
(
rect
.
tl_corner
(),
levels
),
point_up
(
rect
.
br_corner
(),
levels
));
}
}
// -----------------------------
// -----------------------------
rectangle
rect_down
(
d
rectangle
rect_down
(
const
rectangle
&
rect
const
d
rectangle
&
rect
)
const
)
const
{
{
return
rectangle
(
point_down
(
rect
.
tl_corner
()),
point_down
(
rect
.
br_corner
()));
return
d
rectangle
(
point_down
(
rect
.
tl_corner
()),
point_down
(
rect
.
br_corner
()));
}
}
rectangle
rect_down
(
d
rectangle
rect_down
(
const
rectangle
&
rect
,
const
d
rectangle
&
rect
,
unsigned
int
levels
unsigned
int
levels
)
const
)
const
{
{
return
rectangle
(
point_down
(
rect
.
tl_corner
(),
levels
),
point_down
(
rect
.
br_corner
(),
levels
));
return
d
rectangle
(
point_down
(
rect
.
tl_corner
(),
levels
),
point_down
(
rect
.
br_corner
(),
levels
));
}
}
// -----------------------------
// -----------------------------
...
@@ -196,36 +196,36 @@ namespace dlib
...
@@ -196,36 +196,36 @@ namespace dlib
// -----------------------------
// -----------------------------
rectangle
rect_up
(
d
rectangle
rect_up
(
const
rectangle
&
rect
const
d
rectangle
&
rect
)
const
)
const
{
{
return
rectangle
(
point_up
(
rect
.
tl_corner
()),
point_up
(
rect
.
br_corner
()));
return
d
rectangle
(
point_up
(
rect
.
tl_corner
()),
point_up
(
rect
.
br_corner
()));
}
}
rectangle
rect_up
(
d
rectangle
rect_up
(
const
rectangle
&
rect
,
const
d
rectangle
&
rect
,
unsigned
int
levels
unsigned
int
levels
)
const
)
const
{
{
return
rectangle
(
point_up
(
rect
.
tl_corner
(),
levels
),
point_up
(
rect
.
br_corner
(),
levels
));
return
d
rectangle
(
point_up
(
rect
.
tl_corner
(),
levels
),
point_up
(
rect
.
br_corner
(),
levels
));
}
}
// -----------------------------
// -----------------------------
rectangle
rect_down
(
d
rectangle
rect_down
(
const
rectangle
&
rect
const
d
rectangle
&
rect
)
const
)
const
{
{
return
rectangle
(
point_down
(
rect
.
tl_corner
()),
point_down
(
rect
.
br_corner
()));
return
d
rectangle
(
point_down
(
rect
.
tl_corner
()),
point_down
(
rect
.
br_corner
()));
}
}
rectangle
rect_down
(
d
rectangle
rect_down
(
const
rectangle
&
rect
,
const
d
rectangle
&
rect
,
unsigned
int
levels
unsigned
int
levels
)
const
)
const
{
{
return
rectangle
(
point_down
(
rect
.
tl_corner
(),
levels
),
point_down
(
rect
.
br_corner
(),
levels
));
return
d
rectangle
(
point_down
(
rect
.
tl_corner
(),
levels
),
point_down
(
rect
.
br_corner
(),
levels
));
}
}
// -----------------------------
// -----------------------------
...
@@ -538,36 +538,36 @@ namespace dlib
...
@@ -538,36 +538,36 @@ namespace dlib
// -----------------------------
// -----------------------------
rectangle
rect_up
(
d
rectangle
rect_up
(
const
rectangle
&
rect
const
d
rectangle
&
rect
)
const
)
const
{
{
return
rectangle
(
point_up
(
rect
.
tl_corner
()),
point_up
(
rect
.
br_corner
()));
return
d
rectangle
(
point_up
(
rect
.
tl_corner
()),
point_up
(
rect
.
br_corner
()));
}
}
rectangle
rect_up
(
d
rectangle
rect_up
(
const
rectangle
&
rect
,
const
d
rectangle
&
rect
,
unsigned
int
levels
unsigned
int
levels
)
const
)
const
{
{
return
rectangle
(
point_up
(
rect
.
tl_corner
(),
levels
),
point_up
(
rect
.
br_corner
(),
levels
));
return
d
rectangle
(
point_up
(
rect
.
tl_corner
(),
levels
),
point_up
(
rect
.
br_corner
(),
levels
));
}
}
// -----------------------------
// -----------------------------
rectangle
rect_down
(
d
rectangle
rect_down
(
const
rectangle
&
rect
const
d
rectangle
&
rect
)
const
)
const
{
{
return
rectangle
(
point_down
(
rect
.
tl_corner
()),
point_down
(
rect
.
br_corner
()));
return
d
rectangle
(
point_down
(
rect
.
tl_corner
()),
point_down
(
rect
.
br_corner
()));
}
}
rectangle
rect_down
(
d
rectangle
rect_down
(
const
rectangle
&
rect
,
const
d
rectangle
&
rect
,
unsigned
int
levels
unsigned
int
levels
)
const
)
const
{
{
return
rectangle
(
point_down
(
rect
.
tl_corner
(),
levels
),
point_down
(
rect
.
br_corner
(),
levels
));
return
d
rectangle
(
point_down
(
rect
.
tl_corner
(),
levels
),
point_down
(
rect
.
br_corner
(),
levels
));
}
}
// -----------------------------
// -----------------------------
...
@@ -889,36 +889,36 @@ namespace dlib
...
@@ -889,36 +889,36 @@ namespace dlib
// -----------------------------
// -----------------------------
rectangle
rect_up
(
d
rectangle
rect_up
(
const
rectangle
&
rect
const
d
rectangle
&
rect
)
const
)
const
{
{
return
rectangle
(
point_up
(
rect
.
tl_corner
()),
point_up
(
rect
.
br_corner
()));
return
d
rectangle
(
point_up
(
rect
.
tl_corner
()),
point_up
(
rect
.
br_corner
()));
}
}
rectangle
rect_up
(
d
rectangle
rect_up
(
const
rectangle
&
rect
,
const
d
rectangle
&
rect
,
unsigned
int
levels
unsigned
int
levels
)
const
)
const
{
{
return
rectangle
(
point_up
(
rect
.
tl_corner
(),
levels
),
point_up
(
rect
.
br_corner
(),
levels
));
return
d
rectangle
(
point_up
(
rect
.
tl_corner
(),
levels
),
point_up
(
rect
.
br_corner
(),
levels
));
}
}
// -----------------------------
// -----------------------------
rectangle
rect_down
(
d
rectangle
rect_down
(
const
rectangle
&
rect
const
d
rectangle
&
rect
)
const
)
const
{
{
return
rectangle
(
point_down
(
rect
.
tl_corner
()),
point_down
(
rect
.
br_corner
()));
return
d
rectangle
(
point_down
(
rect
.
tl_corner
()),
point_down
(
rect
.
br_corner
()));
}
}
rectangle
rect_down
(
d
rectangle
rect_down
(
const
rectangle
&
rect
,
const
d
rectangle
&
rect
,
unsigned
int
levels
unsigned
int
levels
)
const
)
const
{
{
return
rectangle
(
point_down
(
rect
.
tl_corner
(),
levels
),
point_down
(
rect
.
br_corner
(),
levels
));
return
d
rectangle
(
point_down
(
rect
.
tl_corner
(),
levels
),
point_down
(
rect
.
br_corner
(),
levels
));
}
}
template
<
template
<
...
...
dlib/image_transforms/image_pyramid_abstract.h
View file @
e0f7b41a
...
@@ -109,21 +109,21 @@ namespace dlib
...
@@ -109,21 +109,21 @@ namespace dlib
point_up(point_down(P)) == P
point_up(point_down(P)) == P
!*/
!*/
rectangle
rect_down
(
d
rectangle
rect_down
(
const
rectangle
&
rect
const
d
rectangle
&
rect
)
const
;
)
const
;
/*!
/*!
ensures
ensures
- returns rectangle(point_down(rect.tl_corner()), point_down(rect.br_corner()));
- returns
d
rectangle(point_down(rect.tl_corner()), point_down(rect.br_corner()));
(i.e. maps rect into a downsampled)
(i.e. maps rect into a downsampled)
!*/
!*/
rectangle
rect_up
(
d
rectangle
rect_up
(
const
rectangle
&
rect
const
d
rectangle
&
rect
)
const
;
)
const
;
/*!
/*!
ensures
ensures
- returns rectangle(point_up(rect.tl_corner()), point_up(rect.br_corner()));
- returns
d
rectangle(point_up(rect.tl_corner()), point_up(rect.br_corner()));
(i.e. maps rect into a parent image)
(i.e. maps rect into a parent image)
!*/
!*/
...
@@ -155,23 +155,23 @@ namespace dlib
...
@@ -155,23 +155,23 @@ namespace dlib
point_up(p,0) == p, etc. )
point_up(p,0) == p, etc. )
!*/
!*/
rectangle
rect_down
(
d
rectangle
rect_down
(
const
rectangle
&
rect
,
const
d
rectangle
&
rect
,
unsigned
int
levels
unsigned
int
levels
)
const
;
)
const
;
/*!
/*!
ensures
ensures
- returns rectangle(point_down(rect.tl_corner(),levels), point_down(rect.br_corner(),levels));
- returns
d
rectangle(point_down(rect.tl_corner(),levels), point_down(rect.br_corner(),levels));
(i.e. Basically applies rect_down() to rect levels times and returns the result.)
(i.e. Basically applies rect_down() to rect levels times and returns the result.)
!*/
!*/
rectangle
rect_up
(
d
rectangle
rect_up
(
const
rectangle
&
rect
,
const
d
rectangle
&
rect
,
unsigned
int
levels
unsigned
int
levels
)
const
;
)
const
;
/*!
/*!
ensures
ensures
- returns rectangle(point_up(rect.tl_corner(),levels), point_up(rect.br_corner(),levels));
- returns
d
rectangle(point_up(rect.tl_corner(),levels), point_up(rect.br_corner(),levels));
(i.e. Basically applies rect_up() to rect levels times and returns the result.)
(i.e. Basically applies rect_up() to rect levels times and returns the result.)
!*/
!*/
...
...
dlib/image_transforms/interpolation.h
View file @
e0f7b41a
...
@@ -1426,15 +1426,15 @@ namespace dlib
...
@@ -1426,15 +1426,15 @@ namespace dlib
struct
chip_details
struct
chip_details
{
{
chip_details
()
:
angle
(
0
),
rows
(
0
),
cols
(
0
)
{}
chip_details
()
:
angle
(
0
),
rows
(
0
),
cols
(
0
)
{}
chip_details
(
const
rectangle
&
rect_
)
:
rect
(
rect_
),
angle
(
0
),
rows
(
rect_
.
height
()),
cols
(
rect_
.
width
())
{}
chip_details
(
const
d
rectangle
&
rect_
)
:
rect
(
rect_
),
angle
(
0
),
rows
(
rect_
.
height
()),
cols
(
rect_
.
width
())
{}
chip_details
(
const
rectangle
&
rect_
,
unsigned
long
size
)
:
rect
(
rect_
),
angle
(
0
)
chip_details
(
const
d
rectangle
&
rect_
,
unsigned
long
size
)
:
rect
(
rect_
),
angle
(
0
)
{
compute_dims_from_size
(
size
);
}
{
compute_dims_from_size
(
size
);
}
chip_details
(
const
rectangle
&
rect_
,
unsigned
long
size
,
double
angle_
)
:
rect
(
rect_
),
angle
(
angle_
)
chip_details
(
const
d
rectangle
&
rect_
,
unsigned
long
size
,
double
angle_
)
:
rect
(
rect_
),
angle
(
angle_
)
{
compute_dims_from_size
(
size
);
}
{
compute_dims_from_size
(
size
);
}
chip_details
(
const
rectangle
&
rect_
,
const
chip_dims
&
dims
)
:
chip_details
(
const
d
rectangle
&
rect_
,
const
chip_dims
&
dims
)
:
rect
(
rect_
),
angle
(
0
),
rows
(
dims
.
rows
),
cols
(
dims
.
cols
)
{}
rect
(
rect_
),
angle
(
0
),
rows
(
dims
.
rows
),
cols
(
dims
.
cols
)
{}
chip_details
(
const
rectangle
&
rect_
,
const
chip_dims
&
dims
,
double
angle_
)
:
chip_details
(
const
d
rectangle
&
rect_
,
const
chip_dims
&
dims
,
double
angle_
)
:
rect
(
rect_
),
angle
(
angle_
),
rows
(
dims
.
rows
),
cols
(
dims
.
cols
)
{}
rect
(
rect_
),
angle
(
angle_
),
rows
(
dims
.
rows
),
cols
(
dims
.
cols
)
{}
template
<
typename
T
>
template
<
typename
T
>
...
@@ -1463,13 +1463,13 @@ namespace dlib
...
@@ -1463,13 +1463,13 @@ namespace dlib
// Note that the translation and scale part are represented by the extraction
// Note that the translation and scale part are represented by the extraction
// rectangle. So here we build the appropriate rectangle.
// rectangle. So here we build the appropriate rectangle.
const
double
scale
=
length
(
p
);
const
double
scale
=
length
(
p
);
rect
=
centered_rect
(
tform
(
point
(
dims
.
cols
,
dims
.
rows
)
/
2
.
0
),
rect
=
centered_
d
rect
(
tform
(
point
(
dims
.
cols
,
dims
.
rows
)
/
2
.
0
),
static_cast
<
unsigned
long
>
(
dims
.
cols
*
scale
+
0
.
5
)
,
dims
.
cols
*
scale
,
static_cast
<
unsigned
long
>
(
dims
.
rows
*
scale
+
0
.
5
)
);
dims
.
rows
*
scale
);
}
}
rectangle
rect
;
d
rectangle
rect
;
double
angle
;
double
angle
;
unsigned
long
rows
;
unsigned
long
rows
;
unsigned
long
cols
;
unsigned
long
cols
;
...
@@ -1611,7 +1611,7 @@ namespace dlib
...
@@ -1611,7 +1611,7 @@ namespace dlib
for
(
unsigned
long
i
=
0
;
i
<
chip_locations
.
size
();
++
i
)
for
(
unsigned
long
i
=
0
;
i
<
chip_locations
.
size
();
++
i
)
{
{
long
depth
=
0
;
long
depth
=
0
;
rectangle
rect
=
pyr
.
rect_down
(
chip_locations
[
i
].
rect
);
d
rectangle
rect
=
pyr
.
rect_down
(
chip_locations
[
i
].
rect
);
while
(
rect
.
area
()
>
chip_locations
[
i
].
size
())
while
(
rect
.
area
()
>
chip_locations
[
i
].
size
())
{
{
rect
=
pyr
.
rect_down
(
rect
);
rect
=
pyr
.
rect_down
(
rect
);
...
@@ -1647,7 +1647,7 @@ namespace dlib
...
@@ -1647,7 +1647,7 @@ namespace dlib
// figure out which level in the pyramid to use to extract the chip
// figure out which level in the pyramid to use to extract the chip
int
level
=
-
1
;
int
level
=
-
1
;
rectangle
rect
=
chip_locations
[
i
].
rect
;
d
rectangle
rect
=
chip_locations
[
i
].
rect
;
while
(
pyr
.
rect_down
(
rect
).
area
()
>
chip_locations
[
i
].
size
())
while
(
pyr
.
rect_down
(
rect
).
area
()
>
chip_locations
[
i
].
size
())
{
{
++
level
;
++
level
;
...
...
dlib/image_transforms/interpolation_abstract.h
View file @
e0f7b41a
...
@@ -923,7 +923,7 @@ namespace dlib
...
@@ -923,7 +923,7 @@ namespace dlib
!*/
!*/
chip_details
(
chip_details
(
const
rectangle
&
rect_
const
d
rectangle
&
rect_
);
);
/*!
/*!
ensures
ensures
...
@@ -935,7 +935,7 @@ namespace dlib
...
@@ -935,7 +935,7 @@ namespace dlib
!*/
!*/
chip_details
(
chip_details
(
const
rectangle
&
rect_
,
const
d
rectangle
&
rect_
,
unsigned
long
size_
unsigned
long
size_
);
);
/*!
/*!
...
@@ -956,7 +956,7 @@ namespace dlib
...
@@ -956,7 +956,7 @@ namespace dlib
!*/
!*/
chip_details
(
chip_details
(
const
rectangle
&
rect_
,
const
d
rectangle
&
rect_
,
unsigned
long
size_
,
unsigned
long
size_
,
double
angle_
double
angle_
);
);
...
@@ -978,7 +978,7 @@ namespace dlib
...
@@ -978,7 +978,7 @@ namespace dlib
!*/
!*/
chip_details
(
chip_details
(
const
rectangle
&
rect_
,
const
d
rectangle
&
rect_
,
const
chip_dims
&
dims
const
chip_dims
&
dims
);
);
/*!
/*!
...
@@ -991,7 +991,7 @@ namespace dlib
...
@@ -991,7 +991,7 @@ namespace dlib
!*/
!*/
chip_details
(
chip_details
(
const
rectangle
&
rect_
,
const
d
rectangle
&
rect_
,
const
chip_dims
&
dims
,
const
chip_dims
&
dims
,
double
angle_
double
angle_
);
);
...
@@ -1034,7 +1034,7 @@ namespace dlib
...
@@ -1034,7 +1034,7 @@ namespace dlib
- returns the number of pixels in this chip. This is just rows*cols.
- returns the number of pixels in this chip. This is just rows*cols.
!*/
!*/
rectangle
rect
;
d
rectangle
rect
;
double
angle
;
double
angle
;
unsigned
long
rows
;
unsigned
long
rows
;
unsigned
long
cols
;
unsigned
long
cols
;
...
...
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