diff --git a/modules/imgproc/src/filter.cpp b/modules/imgproc/src/filter.cpp index 6a90d3e4a3..772048db85 100644 --- a/modules/imgproc/src/filter.cpp +++ b/modules/imgproc/src/filter.cpp @@ -3026,8 +3026,8 @@ void cv::filter2D( InputArray _src, OutputArray _dst, int ddepth, } Ptr f = createLinearFilter(src.type(), dst.type(), kernel, - anchor, delta, borderType ); - f->apply(src, dst); + anchor, delta, borderType & ~BORDER_ISOLATED ); + f->apply(src, dst, Rect(0,0,-1,-1), Point(), (borderType & BORDER_ISOLATED) != 0 ); } diff --git a/modules/imgproc/src/templmatch.cpp b/modules/imgproc/src/templmatch.cpp index fdf08e08ab..4a62d359c2 100644 --- a/modules/imgproc/src/templmatch.cpp +++ b/modules/imgproc/src/templmatch.cpp @@ -144,6 +144,7 @@ void crossCorr( const Mat& img, const Mat& templ, Mat& corr, img0.adjustROI(roiofs.y, wholeSize.height-img.rows-roiofs.y, roiofs.x, wholeSize.width-img.cols-roiofs.x); } + borderType |= BORDER_ISOLATED; // calculate correlation by blocks for( i = 0; i < tileCount; i++ ) diff --git a/modules/imgproc/src/utils.cpp b/modules/imgproc/src/utils.cpp index 7684b996e5..a4c3e31d65 100644 --- a/modules/imgproc/src/utils.cpp +++ b/modules/imgproc/src/utils.cpp @@ -218,6 +218,8 @@ void cv::copyMakeBorder( InputArray _src, OutputArray _dst, int top, int bottom, src.adjustROI(dtop, dbottom, dleft, dright); top -= dtop; left -= dleft; + bottom -= dbottom; + right -= dright; } borderType &= ~BORDER_ISOLATED;