diff --git a/modules/core/include/opencv2/core/utility.hpp b/modules/core/include/opencv2/core/utility.hpp index c844c171b2..41ccb4b88c 100644 --- a/modules/core/include/opencv2/core/utility.hpp +++ b/modules/core/include/opencv2/core/utility.hpp @@ -444,6 +444,23 @@ static inline size_t alignSize(size_t sz, int n) return (sz + n-1) & -n; } +/** @brief Integer division with result round up. + +Use this function instead of `ceil((float)a / b)` expressions. + +@sa alignSize +*/ +static inline int divUp(int a, unsigned int b) +{ + CV_DbgAssert(a >= 0); + return (a + b - 1) / b; +} +/** @overload */ +static inline size_t divUp(size_t a, unsigned int b) +{ + return (a + b - 1) / b; +} + /** @brief Enables or disables the optimized code. The function can be used to dynamically turn on and off optimized code (code that uses SSE2, AVX, diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index bc851704a7..ec09e2117b 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -3406,11 +3406,6 @@ static TransposeInplaceFunc transposeInplaceTab[] = #ifdef HAVE_OPENCL -static inline int divUp(int a, int b) -{ - return (a + b - 1) / b; -} - static bool ocl_transpose( InputArray _src, OutputArray _dst ) { const ocl::Device & dev = ocl::Device::getDefault(); diff --git a/modules/photo/src/fast_nlmeans_denoising_opencl.hpp b/modules/photo/src/fast_nlmeans_denoising_opencl.hpp index 216ba6dd62..b19adbda96 100644 --- a/modules/photo/src/fast_nlmeans_denoising_opencl.hpp +++ b/modules/photo/src/fast_nlmeans_denoising_opencl.hpp @@ -23,11 +23,6 @@ enum CTA_SIZE_DEFAULT = 256 }; -static int divUp(int a, int b) -{ - return (a + b - 1) / b; -} - template static bool ocl_calcAlmostDist2Weight(UMat & almostDist2Weight, int searchWindowSize, int templateWindowSize,