diff --git a/hal/ipp/include/ipp_hal_core.hpp b/hal/ipp/include/ipp_hal_core.hpp index cd138c1ae7..359764a7bf 100644 --- a/hal/ipp/include/ipp_hal_core.hpp +++ b/hal/ipp/include/ipp_hal_core.hpp @@ -12,8 +12,10 @@ int ipp_hal_meanStdDev(const uchar* src_data, size_t src_step, int width, int height, int src_type, double* mean_val, double* stddev_val, uchar* mask, size_t mask_step); -#undef cv_hal_meanStdDev -#define cv_hal_meanStdDev ipp_hal_meanStdDev +// IPP version is less efficient than implementation with universtal intrinsics +// See https://github.com/opencv/opencv/pull/29339 +//#undef cv_hal_meanStdDev +//#define cv_hal_meanStdDev ipp_hal_meanStdDev int ipp_hal_minMaxIdxMaskStep(const uchar* src_data, size_t src_step, int width, int height, int depth, double* _minVal, double* _maxVal, int* _minIdx, int* _maxIdx, uchar* mask, size_t mask_step); diff --git a/hal/riscv-rvv/src/core/mean.cpp b/hal/riscv-rvv/src/core/mean.cpp index 2fc2f98f65..264c06e46b 100644 --- a/hal/riscv-rvv/src/core/mean.cpp +++ b/hal/riscv-rvv/src/core/mean.cpp @@ -19,6 +19,14 @@ inline int meanStdDev_32FC1(const uchar* src_data, size_t src_step, int width, i int meanStdDev(const uchar* src_data, size_t src_step, int width, int height, int src_type, double* mean_val, double* stddev_val, uchar* mask, size_t mask_step) { + + // NOTE: The OpenCV imlementation with universal intrinscs is more efficient + // See https://github.com/opencv/opencv/pull/29339#issuecomment-4778104352 + if (!mask && !stddev_val) + { + return CV_HAL_ERROR_NOT_IMPLEMENTED; + } + switch (src_type) { case CV_8UC1: