diff --git a/modules/imgproc/src/hal_replacement.hpp b/modules/imgproc/src/hal_replacement.hpp index 14baa9d526..261c646876 100644 --- a/modules/imgproc/src/hal_replacement.hpp +++ b/modules/imgproc/src/hal_replacement.hpp @@ -670,12 +670,12 @@ inline int hal_ni_threshold(const uchar* src_data, size_t src_step, uchar* dst_d @param src_data,src_step Source image @param dst_data,dst_step Destination image @param width,height Source image dimensions + @param cn Number of channels @param margins Margins for source image @param ksize Size of kernel @param anchor Anchor point @param normalize If true then result is normalized @param border_type Border type - @param cn Number of channels */ inline int hal_ni_boxFilter(int src_depth, int dst_depth, const uchar* src_data, size_t src_step, uchar* dst_data, size_t dst_step, int width, int height, int cn, CvRect margins, CvSize ksize, CvPoint anchor, bool normalize, int border_type) { return CV_HAL_ERROR_NOT_IMPLEMENTED; } @@ -685,15 +685,15 @@ inline int hal_ni_boxFilter(int src_depth, int dst_depth, const uchar* src_data, /** @brief Blurs an image using a Gaussian filter. - @param src_depth,dst_depth Depths of source and destination image + @param depth Depth of source and destination image @param src_data,src_step Source image @param dst_data,dst_step Destination image @param width,height Source image dimensions + @param cn Number of channels @param margins Margins for source image @param ksize Size of kernel @param sigmaX,sigmaY Gaussian kernel standard deviation. @param border_type Border type - @param cn Number of channels */ inline int hal_ni_gaussianBlur(int depth, const uchar* src_data, size_t src_step, uchar* dst_data, size_t dst_step, int width, int height, int cn, CvRect margins, CvSize ksize, double sigmaX, double sigmaY, int border_type) { return CV_HAL_ERROR_NOT_IMPLEMENTED; } diff --git a/modules/imgproc/src/smooth.cpp b/modules/imgproc/src/smooth.cpp index a296242baf..07fa6040c5 100644 --- a/modules/imgproc/src/smooth.cpp +++ b/modules/imgproc/src/smooth.cpp @@ -2102,9 +2102,10 @@ void cv::GaussianBlur( InputArray _src, OutputArray _dst, Size ksize, CV_OVX_RUN(true, openvx_gaussianBlur(_src, _dst, ksize, sigma1, sigma2, borderType)) -#ifdef HAVE_TEGRA_OPTIMIZATION Mat src = _src.getMat(); Mat dst = _dst.getMat(); + +#ifdef HAVE_TEGRA_OPTIMIZATION if(sigma1 == 0 && sigma2 == 0 && tegra::useTegra() && tegra::gaussian(src, dst, ksize, borderType)) return; #endif @@ -2114,9 +2115,6 @@ void cv::GaussianBlur( InputArray _src, OutputArray _dst, Size ksize, _src.rows() > ksize.height && _src.cols() > ksize.width); (void)useOpenCL; - Mat src = _src.getMat(); - Mat dst = _dst.getMat(); - int sdepth = CV_MAT_DEPTH(type), cn = CV_MAT_CN(type); Point ofs; @@ -2130,6 +2128,9 @@ void cv::GaussianBlur( InputArray _src, OutputArray _dst, Size ksize, CALL_HAL(gaussianBlur, cv_hal_gaussianBlur, sdepth, src.ptr(), src.step, dst.ptr(), dst.step, src.cols, src.rows, cn, margin, (CvSize)(ksize), sigma1, sigma2, borderType); + src.release(); + dst.release(); + CV_IPP_RUN(!useOpenCL, ipp_GaussianBlur( _src, _dst, ksize, sigma1, sigma2, borderType)); Mat kx, ky;