From a0bc0ab7cb7ee4eeb4e9f79cfbaace267fcf203e Mon Sep 17 00:00:00 2001 From: Nisarg Thakkar Date: Wed, 15 Apr 2015 23:49:01 +0530 Subject: [PATCH 1/2] Fix for Bug4243 --- modules/imgproc/src/morph.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/imgproc/src/morph.cpp b/modules/imgproc/src/morph.cpp index 44eb3adfc..78c0e4f0a 100644 --- a/modules/imgproc/src/morph.cpp +++ b/modules/imgproc/src/morph.cpp @@ -1820,11 +1820,22 @@ static bool ocl_morphologyEx(InputArray _src, OutputArray _dst, int op, #endif void cv::morphologyEx( InputArray _src, OutputArray _dst, int op, - InputArray kernel, Point anchor, int iterations, + InputArray _kernel, Point anchor, int iterations, int borderType, const Scalar& borderValue ) { #ifdef HAVE_OPENCL - Size ksize = kernel.size(); + Size ksize = _kernel.size(); + Mat tempKernel; + if (ksize.height==0 || ksize.width==0) + { + tempKernel = getStructuringElement(MORPH_RECT, Size(3,3), Point(1,1)); + ksize = tempKernel.size(); + } + else + { + tempKernel = _kernel.getMat(); + } + InputArray kernel = InputArray(tempKernel); anchor = normalizeAnchor(anchor, ksize); CV_OCL_RUN(_dst.isUMat() && _src.dims() <= 2 && _src.channels() <= 4 && From 00094a879280f89acaad8f1d48bd8a873957e32b Mon Sep 17 00:00:00 2001 From: Nisarg Thakkar Date: Thu, 16 Apr 2015 00:22:08 +0530 Subject: [PATCH 2/2] Fix for Bug4243. Made changes relating to non OpenCL devices --- modules/imgproc/src/morph.cpp | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/modules/imgproc/src/morph.cpp b/modules/imgproc/src/morph.cpp index 78c0e4f0a..f2d971bea 100644 --- a/modules/imgproc/src/morph.cpp +++ b/modules/imgproc/src/morph.cpp @@ -1823,19 +1823,13 @@ void cv::morphologyEx( InputArray _src, OutputArray _dst, int op, InputArray _kernel, Point anchor, int iterations, int borderType, const Scalar& borderValue ) { + Mat kernel = _kernel.getMat(); + if (kernel.empty()) + { + kernel = getStructuringElement(MORPH_RECT, Size(3,3), Point(1,1)); + } #ifdef HAVE_OPENCL - Size ksize = _kernel.size(); - Mat tempKernel; - if (ksize.height==0 || ksize.width==0) - { - tempKernel = getStructuringElement(MORPH_RECT, Size(3,3), Point(1,1)); - ksize = tempKernel.size(); - } - else - { - tempKernel = _kernel.getMat(); - } - InputArray kernel = InputArray(tempKernel); + Size ksize = kernel.size(); anchor = normalizeAnchor(anchor, ksize); CV_OCL_RUN(_dst.isUMat() && _src.dims() <= 2 && _src.channels() <= 4 &&