diff --git a/modules/ocl/src/filtering.cpp b/modules/ocl/src/filtering.cpp index 4a04e2de83..902f2d2df9 100644 --- a/modules/ocl/src/filtering.cpp +++ b/modules/ocl/src/filtering.cpp @@ -1329,6 +1329,15 @@ Ptr cv::ocl::createGaussianFilter_GPU(int type, Size ksize, do void cv::ocl::GaussianBlur(const oclMat &src, oclMat &dst, Size ksize, double sigma1, double sigma2, int bordertype) { + if (bordertype != BORDER_CONSTANT) + { + if (src.rows == 1) + ksize.height = 1; + + if (src.cols == 1) + ksize.width = 1; + } + if (ksize.width == 1 && ksize.height == 1) { src.copyTo(dst); @@ -1351,15 +1360,6 @@ void cv::ocl::GaussianBlur(const oclMat &src, oclMat &dst, Size ksize, double si dst.create(src.size(), src.type()); - if (bordertype != BORDER_CONSTANT) - { - if (src.rows == 1) - ksize.height = 1; - - if (src.cols == 1) - ksize.width = 1; - } - Ptr f = createGaussianFilter_GPU(src.type(), ksize, sigma1, sigma2, bordertype); f->apply(src, dst); } diff --git a/modules/ocl/test/test_filters.cpp b/modules/ocl/test/test_filters.cpp index a8583b28ad..30487e7cf1 100644 --- a/modules/ocl/test/test_filters.cpp +++ b/modules/ocl/test/test_filters.cpp @@ -272,7 +272,7 @@ OCL_TEST_P(GaussianBlurTest, Mat) GaussianBlur(src_roi, dst_roi, Size(ksize, ksize), sigma1, sigma2, borderType); ocl::GaussianBlur(gsrc_roi, gdst_roi, Size(ksize, ksize), sigma1, sigma2, borderType); - Near(); + Near(CV_MAT_DEPTH(type) == CV_8U ? 3 : 1e-6, false); } }