Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
e8c2f2ee
Commit
e8c2f2ee
authored
Sep 26, 2014
by
Adrien BAK
Committed by
Adrien BAK
Oct 14, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
constness
parent
2f046ae8
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
22 additions
and
17 deletions
+22
-17
seamless_cloning.cpp
modules/photo/src/seamless_cloning.cpp
+3
-3
seamless_cloning.hpp
modules/photo/src/seamless_cloning.hpp
+19
-14
No files found.
modules/photo/src/seamless_cloning.cpp
View file @
e8c2f2ee
...
...
@@ -50,9 +50,9 @@ using namespace cv;
void
cv
::
seamlessClone
(
InputArray
_src
,
InputArray
_dst
,
InputArray
_mask
,
Point
p
,
OutputArray
_blend
,
int
flags
)
{
Mat
src
=
_src
.
getMat
();
Mat
dest
=
_dst
.
getMat
();
Mat
mask
=
_mask
.
getMat
();
const
Mat
src
=
_src
.
getMat
();
const
Mat
dest
=
_dst
.
getMat
();
const
Mat
mask
=
_mask
.
getMat
();
_blend
.
create
(
dest
.
size
(),
CV_8UC3
);
Mat
blend
=
_blend
.
getMat
();
...
...
modules/photo/src/seamless_cloning.hpp
View file @
e8c2f2ee
...
...
@@ -51,17 +51,22 @@ using namespace cv;
class
Cloning
{
public
:
void
normal_clone
(
const
Mat
&
I
,
const
Mat
&
mask
,
const
Mat
&
wmask
,
Mat
&
cloned
,
int
num
);
void
illum_change
(
Mat
&
I
,
Mat
&
mask
,
Mat
&
wmask
,
Mat
&
cloned
,
float
alpha
,
float
beta
);
void
local_color_change
(
Mat
&
I
,
Mat
&
mask
,
Mat
&
wmask
,
Mat
&
cloned
,
float
red_mul
,
float
green_mul
,
float
blue_mul
);
void
texture_flatten
(
Mat
&
I
,
Mat
&
mask
,
Mat
&
wmask
,
double
low_threshold
,
double
high_threhold
,
int
kernel_size
,
Mat
&
cloned
);
protected
:
vector
<
Mat
>
rgb_channel
,
rgbx_channel
,
rgby_channel
,
output
;
Mat
grx
,
gry
,
sgx
,
sgy
,
srx32
,
sry32
,
grx32
,
gry32
,
smask
,
smask1
;
void
init_var
(
Mat
&
I
,
Mat
&
wmask
);
void
initialization
(
Mat
&
I
,
Mat
&
mask
,
Mat
&
wmask
);
void
init_var
(
const
Mat
&
I
,
const
Mat
&
wmask
);
void
initialization
(
const
Mat
&
I
,
const
Mat
&
mask
,
const
Mat
&
wmask
);
void
scalar_product
(
Mat
mat
,
float
r
,
float
g
,
float
b
);
void
array_product
(
Mat
mat1
,
Mat
mat2
,
Mat
mat3
);
void
poisson
(
Mat
&
I
,
Mat
&
gx
,
Mat
&
gy
,
Mat
&
sx
,
Mat
&
sy
);
void
evaluate
(
Mat
&
I
,
Mat
&
wmask
,
Mat
&
cloned
);
void
poisson
(
const
Mat
&
I
,
const
Mat
&
gx
,
const
Mat
&
gy
,
const
Mat
&
sx
,
const
Mat
&
sy
);
void
evaluate
(
const
Mat
&
I
,
const
Mat
&
wmask
,
const
Mat
&
cloned
);
void
getGradientx
(
const
Mat
&
img
,
Mat
&
gx
);
void
getGradienty
(
const
Mat
&
img
,
Mat
&
gy
);
void
lapx
(
const
Mat
&
img
,
Mat
&
gxx
);
...
...
@@ -71,10 +76,10 @@ class Cloning
void
transpose
(
double
*
mat
,
double
*
mat_t
,
int
h
,
int
w
);
void
solve
(
const
Mat
&
img
,
double
*
mod_diff
,
Mat
&
result
);
void
poisson_solver
(
const
Mat
&
img
,
Mat
&
gxx
,
Mat
&
gyy
,
Mat
&
result
);
void
normal_clone
(
Mat
&
I
,
Mat
&
mask
,
Mat
&
wmask
,
Mat
&
cloned
,
int
num
);
void
local_color_change
(
Mat
&
I
,
Mat
&
mask
,
Mat
&
wmask
,
Mat
&
cloned
,
float
red_mul
,
float
green_mul
,
float
blue_mul
);
void
illum_change
(
Mat
&
I
,
Mat
&
mask
,
Mat
&
wmask
,
Mat
&
cloned
,
float
alpha
,
float
beta
);
void
texture_flatten
(
Mat
&
I
,
Mat
&
mask
,
Mat
&
wmask
,
double
low_threshold
,
double
high_threhold
,
int
kernel_size
,
Mat
&
cloned
);
};
void
Cloning
::
getGradientx
(
const
Mat
&
img
,
Mat
&
gx
)
...
...
@@ -352,7 +357,7 @@ void Cloning::poisson_solver(const Mat &img, Mat &gxx , Mat &gyy, Mat &result)
delete
[]
boundary_point
;
}
void
Cloning
::
init_var
(
Mat
&
I
,
Mat
&
wmask
)
void
Cloning
::
init_var
(
const
Mat
&
I
,
const
Mat
&
wmask
)
{
grx
=
Mat
(
I
.
size
(),
CV_32FC3
);
gry
=
Mat
(
I
.
size
(),
CV_32FC3
);
...
...
@@ -369,7 +374,7 @@ void Cloning::init_var(Mat &I, Mat &wmask)
gry32
=
Mat
(
I
.
size
(),
CV_32FC3
);
}
void
Cloning
::
initialization
(
Mat
&
I
,
Mat
&
mask
,
Mat
&
wmask
)
void
Cloning
::
initialization
(
const
Mat
&
I
,
const
Mat
&
mask
,
const
Mat
&
wmask
)
{
init_var
(
I
,
wmask
);
...
...
@@ -411,7 +416,7 @@ void Cloning::array_product(Mat mat1, Mat mat2, Mat mat3)
merge
(
channels_temp1
,
mat1
);
}
void
Cloning
::
poisson
(
Mat
&
I
,
Mat
&
gx
,
Mat
&
gy
,
Mat
&
sx
,
Mat
&
sy
)
void
Cloning
::
poisson
(
const
Mat
&
I
,
const
Mat
&
gx
,
const
Mat
&
gy
,
const
Mat
&
sx
,
const
Mat
&
sy
)
{
Mat
fx
=
Mat
(
I
.
size
(),
CV_32FC3
);
Mat
fy
=
Mat
(
I
.
size
(),
CV_32FC3
);
...
...
@@ -435,7 +440,7 @@ void Cloning::poisson(Mat &I, Mat &gx, Mat &gy, Mat &sx, Mat &sy)
poisson_solver
(
rgb_channel
[
0
],
rgbx_channel
[
0
],
rgby_channel
[
0
],
output
[
0
]);
}
void
Cloning
::
evaluate
(
Mat
&
I
,
Mat
&
wmask
,
Mat
&
cloned
)
void
Cloning
::
evaluate
(
const
Mat
&
I
,
const
Mat
&
wmask
,
const
Mat
&
cloned
)
{
bitwise_not
(
wmask
,
wmask
);
...
...
@@ -451,7 +456,7 @@ void Cloning::evaluate(Mat &I, Mat &wmask, Mat &cloned)
merge
(
output
,
cloned
);
}
void
Cloning
::
normal_clone
(
Mat
&
I
,
Mat
&
mask
,
Mat
&
wmask
,
Mat
&
cloned
,
int
num
)
void
Cloning
::
normal_clone
(
const
Mat
&
I
,
const
Mat
&
mask
,
const
Mat
&
wmask
,
Mat
&
cloned
,
int
num
)
{
int
w
=
I
.
size
().
width
;
int
h
=
I
.
size
().
height
;
...
...
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