diff --git a/modules/imgproc/src/smooth.cpp b/modules/imgproc/src/smooth.cpp index 4a9c27e87a..bcff9818cb 100644 --- a/modules/imgproc/src/smooth.cpp +++ b/modules/imgproc/src/smooth.cpp @@ -418,12 +418,6 @@ void cv::GaussianBlur( InputArray _src, OutputArray _dst, Size ksize, _dst.create( src.size(), src.type() ); Mat dst = _dst.getMat(); - if( ksize.width == 1 && ksize.height == 1 ) - { - src.copyTo(dst); - return; - } - if( borderType != BORDER_CONSTANT ) { if( src.rows == 1 ) @@ -431,6 +425,18 @@ void cv::GaussianBlur( InputArray _src, OutputArray _dst, Size ksize, if( src.cols == 1 ) ksize.width = 1; } + + if( ksize.width == 1 && ksize.height == 1 ) + { + src.copyTo(dst); + return; + } + +#ifdef HAVE_TEGRA_OPTIMIZATION + if(tegra::gaussian(src, dst, ksize, borderType)) + return; +#endif + Ptr f = createGaussianFilter( src.type(), ksize, sigma1, sigma2, borderType ); f->apply( src, dst ); }