OpenCV 4.5.3(日本語機械翻訳)
マクロ定義 | 関数

マクロ定義

#define OPENCV_HAL_IMPL_MATH_FUNC(func, cfunc, _Tp2)
ヘルパーマクロ[【詳解】(英語]
#define OPENCV_HAL_IMPL_CMP_OP(cmp_op)
ヘルパーマクロ[【詳解】(英語]
#define OPENCV_HAL_IMPL_ARITHM_OP(func, bin_op, cast_op, _Tp2)
ヘルパーマクロ[【詳解】(英語]
#define OPENCV_HAL_IMPL_SHIFT_OP(shift_op)
ヘルパーマクロ[【詳解】(英語]
#define OPENCV_HAL_IMPL_ROTATE_SHIFT_OP(suffix, opA, opB)
ビット単位の左シフト[【詳解】(英語]
#define OPENCV_HAL_IMPL_C_INIT_ZERO(_Tpvec, prefix, suffix)   inline _Tpvec prefix##_setzero_##suffix() { return _Tpvec::zero(); }
ヘルパーマクロ
#define OPENCV_HAL_IMPL_C_INIT_VAL(_Tpvec, _Tp, prefix, suffix)   inline _Tpvec prefix##_setall_##suffix(_Tp val) { return _Tpvec::all(val); }
ヘルパーマクロ
#define OPENCV_HAL_IMPL_C_REINTERPRET(_Tp, suffix)
ヘルパーマクロ[【詳解】(英語]
#define OPENCV_HAL_IMPL_C_SHIFTL(_Tp)
ヘルパーマクロ[【詳解】(英語]
#define OPENCV_HAL_IMPL_C_SHIFTR(_Tp)
ヘルパーマクロ[【詳解】(英語]
#define OPENCV_HAL_IMPL_C_RSHIFTR(_Tp)
ヘルパーマクロ[【詳解】(英語]
#define OPENCV_HAL_IMPL_C_PACK(_Tp, _Tpn, pack_suffix, cast)
ヘルパーマクロ[【詳解】(英語]
#define OPENCV_HAL_IMPL_C_RSHR_PACK(_Tp, _Tpn, pack_suffix, cast)
ヘルパーマクロ[【詳解】(英語]
#define OPENCV_HAL_IMPL_C_PACK_STORE(_Tp, _Tpn, pack_suffix, cast)
ヘルパーマクロ[【詳解】(英語]
#define OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(_Tp, _Tpn, pack_suffix, cast)
ヘルパーマクロ[【詳解】(英語]

関数

cv::OPENCV_HAL_IMPL_MATH_FUNC (v_abs,(typename V_TypeTraits< _Tp >::abs_type) std::abs, typename V_TypeTraits< _Tp >::abs_type) static const unsigned char popCountTable[]
要素の平方根[【詳解】(英語]

詳解

マクロ定義詳解

OPENCV_HAL_IMPL_ARITHM_OP

#define OPENCV_HAL_IMPL_ARITHM_OP ( func,
bin_op,
cast_op,
_Tp2
)
値:
template<typename _Tp, int n> \
inline v_reg<_Tp2, n> func(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \
{ \
typedef _Tp2 rtype; \
v_reg<rtype, n> c; \
for( int i = 0; i < n; i++ ) \
c.s[i] = cast_op(a.s[i] bin_op b.s[i]); \
return c; \
}

ヘルパーマクロ

OPENCV_HAL_IMPL_C_PACK

#define OPENCV_HAL_IMPL_C_PACK ( _Tp,
_Tpn,
pack_suffix,
cast
)
値:
template<int n> inline v_reg<_Tpn, 2*n> v_##pack_suffix(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \
{ \
v_reg<_Tpn, 2*n> c; \
for( int i = 0; i < n; i++ ) \
{ \
c.s[i] = cast<_Tpn>(a.s[i]); \
c.s[i+n] = cast<_Tpn>(b.s[i]); \
} \
return c; \
}

ヘルパーマクロ

OPENCV_HAL_IMPL_C_PACK_STORE

#define OPENCV_HAL_IMPL_C_PACK_STORE ( _Tp,
_Tpn,
pack_suffix,
cast
)
値:
template<int n> inline void v_##pack_suffix##_store(_Tpn* ptr, const v_reg<_Tp, n>& a) \
{ \
for( int i = 0; i < n; i++ ) \
ptr[i] = cast<_Tpn>(a.s[i]); \
}

ヘルパーマクロ

OPENCV_HAL_IMPL_C_REINTERPRET

#define OPENCV_HAL_IMPL_C_REINTERPRET ( _Tp,
suffix
)
値:
template<typename _Tp0, int n0> inline v_reg<_Tp, n0*sizeof(_Tp0)/sizeof(_Tp)> \
v_reinterpret_as_##suffix(const v_reg<_Tp0, n0>& a) \
{ return a.template reinterpret_as<_Tp, n0*sizeof(_Tp0)/sizeof(_Tp)>(); }

ヘルパーマクロ

OPENCV_HAL_IMPL_C_RSHIFTR

#define OPENCV_HAL_IMPL_C_RSHIFTR ( _Tp )
値:
template<int shift, int n> inline v_reg<_Tp, n> v_rshr(const v_reg<_Tp, n>& a) \
{ \
v_reg<_Tp, n> c; \
for( int i = 0; i < n; i++ ) \
c.s[i] = (_Tp)((a.s[i] + ((_Tp)1 << (shift - 1))) >> shift); \
return c; \
}

ヘルパーマクロ

OPENCV_HAL_IMPL_C_RSHR_PACK

#define OPENCV_HAL_IMPL_C_RSHR_PACK ( _Tp,
_Tpn,
pack_suffix,
cast
)
値:
template<int shift, int n> inline v_reg<_Tpn, 2*n> v_rshr_##pack_suffix(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \
{ \
v_reg<_Tpn, 2*n> c; \
for( int i = 0; i < n; i++ ) \
{ \
c.s[i] = cast<_Tpn>((a.s[i] + ((_Tp)1 << (shift - 1))) >> shift); \
c.s[i+n] = cast<_Tpn>((b.s[i] + ((_Tp)1 << (shift - 1))) >> shift); \
} \
return c; \
}

ヘルパーマクロ

OPENCV_HAL_IMPL_C_RSHR_PACK_STORE

#define OPENCV_HAL_IMPL_C_RSHR_PACK_STORE ( _Tp,
_Tpn,
pack_suffix,
cast
)
値:
template<int shift, int n> inline void v_rshr_##pack_suffix##_store(_Tpn* ptr, const v_reg<_Tp, n>& a) \
{ \
for( int i = 0; i < n; i++ ) \
ptr[i] = cast<_Tpn>((a.s[i] + ((_Tp)1 << (shift - 1))) >> shift); \
}

ヘルパーマクロ

OPENCV_HAL_IMPL_C_SHIFTL

#define OPENCV_HAL_IMPL_C_SHIFTL ( _Tp )
値:
template<int shift, int n> inline v_reg<_Tp, n> v_shl(const v_reg<_Tp, n>& a) \
{ return a << shift; }

ヘルパーマクロ

OPENCV_HAL_IMPL_C_SHIFTR

#define OPENCV_HAL_IMPL_C_SHIFTR ( _Tp )
値:
template<int shift, int n> inline v_reg<_Tp, n> v_shr(const v_reg<_Tp, n>& a) \
{ return a >> shift; }

ヘルパーマクロ

OPENCV_HAL_IMPL_CMP_OP

#define OPENCV_HAL_IMPL_CMP_OP ( cmp_op )
値:
template<typename _Tp, int n> \
inline v_reg<_Tp, n> operator cmp_op(const v_reg<_Tp, n>& a, const v_reg<_Tp, n>& b) \
{ \
typedef typename V_TypeTraits<_Tp>::int_type itype; \
v_reg<_Tp, n> c; \
for( int i = 0; i < n; i++ ) \
c.s[i] = V_TypeTraits<_Tp>::reinterpret_from_int((itype)-(int)(a.s[i] cmp_op b.s[i])); \
return c; \
}

ヘルパーマクロ

OPENCV_HAL_IMPL_MATH_FUNC

#define OPENCV_HAL_IMPL_MATH_FUNC ( func,
cfunc,
_Tp2
)
値:
template<typename _Tp, int n> inline v_reg<_Tp2, n> func(const v_reg<_Tp, n>& a) \
{ \
v_reg<_Tp2, n> c; \
for( int i = 0; i < n; i++ ) \
c.s[i] = cfunc(a.s[i]); \
return c; \
}

ヘルパーマクロ

OPENCV_HAL_IMPL_ROTATE_SHIFT_OP

#define OPENCV_HAL_IMPL_ROTATE_SHIFT_OP ( suffix,
opA,
opB
)

ビット単位の左シフト

16、32、64 ビットの整数値に対して。

ビット単位の右シフト

16、32、64 ビットの整数値に対して。

ヘルパーマクロ

OPENCV_HAL_IMPL_SHIFT_OP

#define OPENCV_HAL_IMPL_SHIFT_OP ( shift_op )
値:
template<typename _Tp, int n> inline v_reg<_Tp, n> operator shift_op(const v_reg<_Tp, n>& a, int imm) \
{ \
v_reg<_Tp, n> c; \
for( int i = 0; i < n; i++ ) \
c.s[i] = (_Tp)(a.s[i] shift_op imm); \
return c; \
}

ヘルパーマクロ

関数詳解

OPENCV_HAL_IMPL_MATH_FUNC()

cv::OPENCV_HAL_IMPL_MATH_FUNC ( v_abs ,
(typename V_TypeTraits< _Tp >::abs_type) std::abs ,
typename V_TypeTraits< _Tp >::abs_type
) const

要素の平方根

浮動小数点型のみ対応。

エレメントの絶対値

浮動小数点型のみ対応。

ヘルパーマクロ

ヘルパーマクロ

各ペアの最小値を選択

スキーム.

{A1 A2 ...}
{B1 B2 ...}
--------------
{min(A1,B1) min(A2,B2) ...}
CV_EXPORTS_W void min(InputArray src1, InputArray src2, OutputArray dst)
Calculates per-element minimum of two arrays or an array and a scalar.

64ビット整数を除くすべてのタイプで

各ペアの最大値の選択

スキーム.

{A1 A2 ...}
{B1 B2 ...}
--------------
{max(A1,B1) max(A2,B2) ...}
CV_EXPORTS_W void max(InputArray src1, InputArray src2, OutputArray dst)
Calculates per-element maximum of two arrays or an array and a scalar.

64ビット整数を除くすべてのタイプで

1つの最小値を見つける

スキーム.

{A1 A2 A3 ...} => min(A1,A2,A3,...)

64ビット整数型、64ビット浮動小数点型を除くすべての型で

1つの最大値を求めます.

スキーム.

{A1 A2 A3 ...} => max(A1,A2,A3,...)

64ビット整数型、64ビット浮動小数点型を除くすべての型で