diff --git a/modules/core/src/norm.simd.hpp b/modules/core/src/norm.simd.hpp index 541c27f12e..70c9b3220e 100644 --- a/modules/core/src/norm.simd.hpp +++ b/modules/core/src/norm.simd.hpp @@ -45,7 +45,7 @@ struct NormL2_SIMD { inline ST operator() (const T* src, int n) const { ST s = 0; for (int i = 0; i < n; i++) { - ST v = src[i]; + ST v = (ST)src[i]; s += v * v; } return s; @@ -578,7 +578,8 @@ normInf_(const T* src, const uchar* mask, ST* _result, int len, int cn) ST result = *_result; if( !mask ) { - result = std::max(result, normInf(src, len*cn)); + NormInf_SIMD op; + result = std::max(result, op(src, len*cn)); } else { @@ -599,7 +600,8 @@ normL1_(const T* src, const uchar* mask, ST* _result, int len, int cn) ST result = *_result; if( !mask ) { - result += normL1(src, len*cn); + NormL1_SIMD op; + result += op(src, len*cn); } else { @@ -620,7 +622,8 @@ normL2_(const T* src, const uchar* mask, ST* _result, int len, int cn) ST result = *_result; if( !mask ) { - result += normL2Sqr(src, len*cn); + NormL2_SIMD op; + result += op(src, len*cn); } else {