Skip to content

Commit ed3d2cd

Browse files
stalin18savuor
authored andcommitted
fixed unnecessary reconstruction in seamlessclone
fixed unnecessary reconstruction in seamlessclone by using only the required rectangular area in input images
1 parent 4435ec5 commit ed3d2cd

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

modules/photo/src/seamless_cloning.cpp

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,13 @@ void cv::seamlessClone(InputArray _src, InputArray _dst, InputArray _mask, Point
5656
const Mat mask = _mask.getMat();
5757
_blend.create(dest.size(), CV_8UC3);
5858
Mat blend = _blend.getMat();
59+
dest.copyTo(blend);
5960

6061
int minx = INT_MAX, miny = INT_MAX, maxx = INT_MIN, maxy = INT_MIN;
6162
int h = mask.size().height;
6263
int w = mask.size().width;
6364

6465
Mat gray = Mat(mask.size(),CV_8UC1);
65-
Mat dst_mask = Mat::zeros(dest.size(),CV_8UC1);
66-
Mat cs_mask = Mat::zeros(src.size(),CV_8UC3);
67-
Mat cd_mask = Mat::zeros(dest.size(),CV_8UC3);
6866

6967
if(mask.channels() == 3)
7068
cvtColor(mask, gray, COLOR_BGR2GRAY );
@@ -100,19 +98,16 @@ void cv::seamlessClone(InputArray _src, InputArray _dst, InputArray _mask, Point
10098
Rect roi_d(minyd,minxd,leny,lenx);
10199
Rect roi_s(miny,minx,leny,lenx);
102100

103-
Mat destinationROI = dst_mask(roi_d);
104-
Mat sourceROI = cs_mask(roi_s);
101+
Mat destinationROI = dest(roi_d).clone();
105102

106-
gray(roi_s).copyTo(destinationROI);
103+
Mat sourceROI = Mat::zeros(leny, lenx, src.type());
107104
src(roi_s).copyTo(sourceROI,gray(roi_s));
108-
src(roi_s).copyTo(patch, gray(roi_s));
109-
110-
destinationROI = cd_mask(roi_d);
111-
cs_mask(roi_s).copyTo(destinationROI);
112105

106+
Mat maskROI = gray(roi_s);
107+
Mat recoveredROI = blend(roi_d);
113108

114109
Cloning obj;
115-
obj.normalClone(dest,cd_mask,dst_mask,blend,flags);
110+
obj.normalClone(destinationROI,sourceROI,maskROI,recoveredROI,flags);
116111

117112
}
118113

0 commit comments

Comments
 (0)