mirror of
https://github.com/opencv/opencv.git
synced 2025-08-06 14:36:36 +08:00
Use HAL for cv::mean function too.
This commit is contained in:
parent
1e013a07c4
commit
7aaada4175
@ -1104,26 +1104,23 @@ inline int hal_ni_transpose2d(const uchar* src_data, size_t src_step, uchar* dst
|
|||||||
#include "custom_hal.hpp"
|
#include "custom_hal.hpp"
|
||||||
|
|
||||||
//! @cond IGNORED
|
//! @cond IGNORED
|
||||||
#define CALL_HAL_RET(name, fun, retval, ...) \
|
|
||||||
|
#define CALL_HAL_RET2(name, fun, retval, ...) \
|
||||||
{ \
|
{ \
|
||||||
int res = __CV_EXPAND(fun(__VA_ARGS__, &retval)); \
|
int res = __CV_EXPAND(fun(__VA_ARGS__)); \
|
||||||
if (res == CV_HAL_ERROR_OK) \
|
if (res == CV_HAL_ERROR_OK) \
|
||||||
return retval; \
|
return retval; \
|
||||||
else if (res != CV_HAL_ERROR_NOT_IMPLEMENTED) \
|
else if (res != CV_HAL_ERROR_NOT_IMPLEMENTED) \
|
||||||
CV_Error_(cv::Error::StsInternal, \
|
CV_Error_(cv::Error::StsInternal, \
|
||||||
("HAL implementation " CVAUX_STR(name) " ==> " CVAUX_STR(fun) " returned %d (0x%08x)", res, res)); \
|
("HAL implementation " CVAUX_STR(name) " ==> " CVAUX_STR(fun) " returned %d (0x%08x)", res, res)); \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define CALL_HAL_RET(name, fun, retval, ...) \
|
||||||
|
CALL_HAL_RET2(name, fun, retval, __VA_ARGS__, &retval)
|
||||||
|
|
||||||
#define CALL_HAL(name, fun, ...) \
|
#define CALL_HAL(name, fun, ...) \
|
||||||
{ \
|
CALL_HAL_RET2(name, fun, ,__VA_ARGS__)
|
||||||
int res = __CV_EXPAND(fun(__VA_ARGS__)); \
|
|
||||||
if (res == CV_HAL_ERROR_OK) \
|
|
||||||
return; \
|
|
||||||
else if (res != CV_HAL_ERROR_NOT_IMPLEMENTED) \
|
|
||||||
CV_Error_(cv::Error::StsInternal, \
|
|
||||||
("HAL implementation " CVAUX_STR(name) " ==> " CVAUX_STR(fun) " returned %d (0x%08x)", res, res)); \
|
|
||||||
}
|
|
||||||
//! @endcond
|
//! @endcond
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -130,13 +130,29 @@ Scalar mean(InputArray _src, InputArray _mask)
|
|||||||
CV_Assert( mask.empty() || mask.type() == CV_8U );
|
CV_Assert( mask.empty() || mask.type() == CV_8U );
|
||||||
|
|
||||||
int k, cn = src.channels(), depth = src.depth();
|
int k, cn = src.channels(), depth = src.depth();
|
||||||
Scalar s;
|
Scalar s = Scalar::all(0.0);
|
||||||
|
|
||||||
|
CV_Assert( cn <= 4 );
|
||||||
|
|
||||||
CV_IPP_RUN(IPP_VERSION_X100 >= 700, ipp_mean(src, mask, s), s)
|
CV_IPP_RUN(IPP_VERSION_X100 >= 700, ipp_mean(src, mask, s), s)
|
||||||
|
|
||||||
|
if (src.isContinuous() && mask.isContinuous())
|
||||||
|
{
|
||||||
|
CALL_HAL_RET2(meanStdDev, cv_hal_meanStdDev, s, src.data, 0, (int)src.total(), 1, src.type(),
|
||||||
|
&s[0], nullptr /*stddev*/, mask.data, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (src.dims <= 2)
|
||||||
|
{
|
||||||
|
CALL_HAL_RET2(meanStdDev, cv_hal_meanStdDev, s, src.data, src.step, src.cols, src.rows, src.type(),
|
||||||
|
&s[0], nullptr, mask.data, mask.step);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SumFunc func = getSumFunc(depth);
|
SumFunc func = getSumFunc(depth);
|
||||||
|
|
||||||
CV_Assert( cn <= 4 && func != 0 );
|
CV_Assert( func != 0 );
|
||||||
|
|
||||||
const Mat* arrays[] = {&src, &mask, 0};
|
const Mat* arrays[] = {&src, &mask, 0};
|
||||||
uchar* ptrs[2] = {};
|
uchar* ptrs[2] = {};
|
||||||
|
Loading…
Reference in New Issue
Block a user