const Mat mask = _mask.getMat();
_blend.create(dest.size(), CV_8UC3);
Mat blend = _blend.getMat();
+ dest.copyTo(blend);
int minx = INT_MAX, miny = INT_MAX, maxx = INT_MIN, maxy = INT_MIN;
int h = mask.size().height;
int w = mask.size().width;
Mat gray = Mat(mask.size(),CV_8UC1);
- Mat dst_mask = Mat::zeros(dest.size(),CV_8UC1);
- Mat cs_mask = Mat::zeros(src.size(),CV_8UC3);
- Mat cd_mask = Mat::zeros(dest.size(),CV_8UC3);
if(mask.channels() == 3)
cvtColor(mask, gray, COLOR_BGR2GRAY );
Rect roi_d(minyd,minxd,leny,lenx);
Rect roi_s(miny,minx,leny,lenx);
- Mat destinationROI = dst_mask(roi_d);
- Mat sourceROI = cs_mask(roi_s);
+ Mat destinationROI = dest(roi_d).clone();
- gray(roi_s).copyTo(destinationROI);
+ Mat sourceROI = Mat::zeros(leny, lenx, src.type());
src(roi_s).copyTo(sourceROI,gray(roi_s));
- src(roi_s).copyTo(patch, gray(roi_s));
-
- destinationROI = cd_mask(roi_d);
- cs_mask(roi_s).copyTo(destinationROI);
+ Mat maskROI = gray(roi_s);
+ Mat recoveredROI = blend(roi_d);
Cloning obj;
- obj.normalClone(dest,cd_mask,dst_mask,blend,flags);
+ obj.normalClone(destinationROI,sourceROI,maskROI,recoveredROI,flags);
}