OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
intrin_cpp.hpp ファイル
#include <limits>
#include <cstring>
#include <algorithm>
#include "opencv2/core/utility.hpp"
#include "opencv2/core/saturate.hpp"
Include dependency graph for intrin_cpp.hpp:
This graph shows which files directly or indirectly include this file:

クラス

struct  cv::v_reg< _Tp, n >
 

名前空間

namespace  cv
 

マクロ定義

#define OPENCV_HAL_HAVE_PACK_STORE_BFLOAT16   1
 
#define OPENCV_HAL_IMPL_ARITHM_OP(func, bin_op, cast_op, _Tp2)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_C_INIT_VAL(_Tpvec, _Tp, prefix, suffix)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_C_INIT_ZERO(_Tpvec, prefix, suffix)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_C_PACK(_Tp, _Tpn, pack_suffix, cast)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_C_PACK_STORE(_Tp, _Tpn, pack_suffix, cast)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_C_REINTERPRET(_Tp, suffix)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_C_RSHIFTR(_Tp)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_C_RSHR_PACK(_Tp, _Tpn, pack_suffix, cast)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_C_RSHR_PACK_STORE(_Tp, _Tpn, pack_suffix, cast)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_C_SHIFTL(_Tp)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_C_SHIFTR(_Tp)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_CMP_OP(cmp_op, func)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_MATH_FUNC(func, cfunc, _Tp2)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_MINMAX_FUNC(func, cfunc)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_REDUCE_MINMAX_FUNC(func, cfunc)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_ROTATE_SHIFT_OP(suffix, opA, opB)
 ヘルパーマクロ。
 
#define OPENCV_HAL_IMPL_SHIFT_OP(shift_op, func)
 ヘルパーマクロ。
 
#define OPENCV_HAL_MATH_HAVE_EXP   1
 

型定義

typedef v_reg< float, 16 > cv::v_float32x16
 16個の32ビット浮動小数点値(単精度)
 
typedef v_reg< float, 4 > cv::v_float32x4
 4個の32ビット浮動小数点値(単精度)
 
typedef v_reg< float, 8 > cv::v_float32x8
 8個の32ビット浮動小数点値(単精度)
 
typedef v_reg< double, 2 > cv::v_float64x2
 2個の64ビット浮動小数点値(倍精度)
 
typedef v_reg< double, 4 > cv::v_float64x4
 4個の64ビット浮動小数点値(倍精度)
 
typedef v_reg< double, 8 > cv::v_float64x8
 8個の64ビット浮動小数点値(倍精度)
 
typedef v_reg< short, 16 > cv::v_int16x16
 16個の16ビット符号付き整数値。
 
typedef v_reg< short, 32 > cv::v_int16x32
 32個の16ビット符号付き整数値。
 
typedef v_reg< short, 8 > cv::v_int16x8
 8個の16ビット符号付き整数値。
 
typedef v_reg< int, 16 > cv::v_int32x16
 16個の32ビット符号付き整数値。
 
typedef v_reg< int, 4 > cv::v_int32x4
 4個の32ビット符号付き整数値。
 
typedef v_reg< int, 8 > cv::v_int32x8
 8個の32ビット符号付き整数値。
 
typedef v_reg< int64, 2 > cv::v_int64x2
 2個の64ビット符号付き整数値。
 
typedef v_reg< int64, 4 > cv::v_int64x4
 4個の64ビット符号付き整数値。
 
typedef v_reg< int64, 8 > cv::v_int64x8
 8個の64ビット符号付き整数値。
 
typedef v_reg< schar, 16 > cv::v_int8x16
 16個の8ビット符号付き整数値。
 
typedef v_reg< schar, 32 > cv::v_int8x32
 32個の8ビット符号付き整数値。
 
typedef v_reg< schar, 64 > cv::v_int8x64
 64個の8ビット符号付き整数値。
 
typedef v_reg< ushort, 16 > cv::v_uint16x16
 16個の16ビット符号なし整数値。
 
typedef v_reg< ushort, 32 > cv::v_uint16x32
 32個の16ビット符号なし整数値。
 
typedef v_reg< ushort, 8 > cv::v_uint16x8
 8個の16ビット符号なし整数値。
 
typedef v_reg< unsigned, 16 > cv::v_uint32x16
 16個の32ビット符号なし整数値。
 
typedef v_reg< unsigned, 4 > cv::v_uint32x4
 4個の32ビット符号なし整数値。
 
typedef v_reg< unsigned, 8 > cv::v_uint32x8
 8個の32ビット符号なし整数値。
 
typedef v_reg< uint64, 2 > cv::v_uint64x2
 2個の64ビット符号なし整数値。
 
typedef v_reg< uint64, 4 > cv::v_uint64x4
 4個の64ビット符号なし整数値。
 
typedef v_reg< uint64, 8 > cv::v_uint64x8
 8個の64ビット符号なし整数値。
 
typedef v_reg< uchar, 16 > cv::v_uint8x16
 16個の8ビット符号なし整数値。
 
typedef v_reg< uchar, 32 > cv::v_uint8x32
 32個の8ビット符号なし整数値。
 
typedef v_reg< uchar, 64 > cv::v_uint8x64
 64個の8ビット符号なし整数値。
 

列挙型

enum  {
  cv::simd128_width = 16 ,
  cv::simd256_width = 32 ,
  cv::simd512_width = 64 ,
  cv::simdmax_width = simd512_width
}
 

関数

void cv::v256_cleanup ()
 
template<typename _Tp >
v_reg< _Tp, simd256_width/sizeof(_Tp)> cv::v256_load (const _Tp *ptr)
 メモリから256ビット長のレジスタ内容をロードする。
 
template<typename _Tp >
v_reg< _Tp, simd256_width/sizeof(_Tp)> cv::v256_load_aligned (const _Tp *ptr)
 メモリからレジスタ内容をロードする(アラインメント済み)
 
template<typename _Tp >
v_reg< typename V_TypeTraits< _Tp >::w_type, simd256_width/sizeof(typename V_TypeTraits< _Tp >::w_type)> cv::v256_load_expand (const _Tp *ptr)
 メモリからレジスタ内容を倍展開してロードする。
 
v_reg< float, simd256_width/sizeof(float)> cv::v256_load_expand (const hfloat *ptr)
 
template<typename _Tp >
v_reg< typename V_TypeTraits< _Tp >::q_type, simd256_width/sizeof(typename V_TypeTraits< _Tp >::q_type)> cv::v256_load_expand_q (const _Tp *ptr)
 メモリからレジスタ内容を4倍展開してロードする。
 
template<typename _Tp >
v_reg< _Tp, simd256_width/sizeof(_Tp)> cv::v256_load_halves (const _Tp *loptr, const _Tp *hiptr)
 2つのメモリブロックからレジスタ内容をロードする。
 
template<typename _Tp >
v_reg< _Tp, simd256_width/sizeof(_Tp)> cv::v256_load_low (const _Tp *ptr)
 128ビットのデータを下位部分にロードする(上位部分は未定義)。
 
void cv::v512_cleanup ()
 
template<typename _Tp >
v_reg< _Tp, simd512_width/sizeof(_Tp)> cv::v512_load (const _Tp *ptr)
 メモリから512ビット長のレジスタ内容をロードする。
 
template<typename _Tp >
v_reg< _Tp, simd512_width/sizeof(_Tp)> cv::v512_load_aligned (const _Tp *ptr)
 メモリからレジスタ内容をロードする(アラインメント済み)
 
template<typename _Tp >
v_reg< typename V_TypeTraits< _Tp >::w_type, simd512_width/sizeof(typename V_TypeTraits< _Tp >::w_type)> cv::v512_load_expand (const _Tp *ptr)
 メモリからレジスタ内容を倍展開してロードする。
 
v_reg< float, simd512_width/sizeof(float)> cv::v512_load_expand (const hfloat *ptr)
 
template<typename _Tp >
v_reg< typename V_TypeTraits< _Tp >::q_type, simd512_width/sizeof(typename V_TypeTraits< _Tp >::q_type)> cv::v512_load_expand_q (const _Tp *ptr)
 メモリからレジスタ内容を4倍展開してロードする。
 
template<typename _Tp >
v_reg< _Tp, simd512_width/sizeof(_Tp)> cv::v512_load_halves (const _Tp *loptr, const _Tp *hiptr)
 2つのメモリブロックからレジスタ内容をロードする。
 
template<typename _Tp >
v_reg< _Tp, simd512_width/sizeof(_Tp)> cv::v512_load_low (const _Tp *ptr)
 256ビットのデータを下位部分にロードする(上位部分は未定義)。
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::abs_type, n > cv::v_abs (const v_reg< _Tp, n > &a)
 要素の絶対値。
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::abs_type, n > cv::v_absdiff (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 絶対差。
 
template<int n>
v_reg< double, n > cv::v_absdiff (const v_reg< double, n > &a, const v_reg< double, n > &b)
 
template<int n>
v_reg< float, n > cv::v_absdiff (const v_reg< float, n > &a, const v_reg< float, n > &b)
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_absdiffs (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 飽和付き絶対差。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_add (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 値を加算する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_add_wrap (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 飽和なしで値を加算する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_and (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 ビットごとのAND。
 
template<int i, typename _Tp , int n>
v_reg< _Tp, n > cv::v_broadcast_element (const v_reg< _Tp, n > &a)
 ベクトルのi番目の要素をブロードキャストする。
 
template<int n>
v_reg< int, n *2 > cv::v_ceil (const v_reg< double, n > &a)
 
template<int n>
v_reg< int, n > cv::v_ceil (const v_reg< float, n > &a)
 要素の切り上げ。
 
template<typename _Tp , int n>
bool cv::v_check_all (const v_reg< _Tp, n > &a)
 パックされた全ての値が0未満かどうかを判定する。
 
template<typename _Tp , int n>
bool cv::v_check_any (const v_reg< _Tp, n > &a)
 パックされた値のいずれかが0未満かどうかを判定する。
 
void cv::v_cleanup ()
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_combine_high (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 2つのベクトルの末尾要素からベクトルを合成する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_combine_low (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 2つのベクトルの先頭要素からベクトルを合成する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_cos (const v_reg< _Tp, n > &a)
 要素の余弦 \( cos(x) \)。
 
template<int n>
v_reg< float, n *2 > cv::v_cvt_f32 (const v_reg< double, n > &a)
 下位半分をfloatに変換する。
 
template<int n>
v_reg< float, n *2 > cv::v_cvt_f32 (const v_reg< double, n > &a, const v_reg< double, n > &b)
 floatに変換する。
 
template<int n>
v_reg< float, n > cv::v_cvt_f32 (const v_reg< int, n > &a)
 floatに変換する。
 
template<int n>
v_reg< double,(n/2)> cv::v_cvt_f64 (const v_reg< float, n > &a)
 下位半分をdoubleに変換する。
 
template<int n>
v_reg< double, n/2 > cv::v_cvt_f64 (const v_reg< int, n > &a)
 下位半分をdoubleに変換する。
 
template<int n>
v_reg< double, n > cv::v_cvt_f64 (const v_reg< int64, n > &a)
 doubleに変換する。
 
template<int n>
v_reg< double,(n/2)> cv::v_cvt_f64_high (const v_reg< float, n > &a)
 ベクトルの上位部分をdoubleに変換する。
 
template<int n>
v_reg< double,(n/2)> cv::v_cvt_f64_high (const v_reg< int, n > &a)
 ベクトルの上位部分をdoubleに変換する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_div (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 値を除算する。
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > cv::v_dotprod (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 要素の内積。
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > cv::v_dotprod (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > &c)
 要素の内積。
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::q_type, n/4 > cv::v_dotprod_expand (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 要素の内積と展開。
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::q_type, n/4 > cv::v_dotprod_expand (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< typename V_TypeTraits< _Tp >::q_type, n/4 > &c)
 要素の内積。
 
template<int n>
v_reg< double, n/2 > cv::v_dotprod_expand (const v_reg< int, n > &a, const v_reg< int, n > &b)
 
template<int n>
v_reg< double, n/2 > cv::v_dotprod_expand (const v_reg< int, n > &a, const v_reg< int, n > &b, const v_reg< double, n/2 > &c)
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::q_type, n/4 > cv::v_dotprod_expand_fast (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 要素の高速内積と展開。
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::q_type, n/4 > cv::v_dotprod_expand_fast (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< typename V_TypeTraits< _Tp >::q_type, n/4 > &c)
 要素の高速内積。
 
template<int n>
v_reg< double, n/2 > cv::v_dotprod_expand_fast (const v_reg< int, n > &a, const v_reg< int, n > &b)
 
template<int n>
v_reg< double, n/2 > cv::v_dotprod_expand_fast (const v_reg< int, n > &a, const v_reg< int, n > &b, const v_reg< double, n/2 > &c)
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > cv::v_dotprod_fast (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 要素の高速内積。
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > cv::v_dotprod_fast (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > &c)
 要素の高速内積。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_eq (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 等価比較。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_erf (const v_reg< _Tp, n > &a)
 Error 関数。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_exp (const v_reg< _Tp, n > &a)
 要素の指数関数 \( e^x \)。
 
template<typename _Tp , int n>
void cv::v_expand (const v_reg< _Tp, n > &a, v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > &b0, v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > &b1)
 値をより幅広いパック型へ展開する。
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > cv::v_expand_high (const v_reg< _Tp, n > &a)
 上位の値をより幅広いパック型へ展開する。
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > cv::v_expand_low (const v_reg< _Tp, n > &a)
 下位の値をより幅広いパック型へ展開する。
 
template<int s, typename _Tp , int n>
v_reg< _Tp, n > cv::v_extract (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 ベクトルの抽出。
 
template<int s, typename _Tp , int n>
_Tp cv::v_extract_n (const v_reg< _Tp, n > &v)
 ベクトルの抽出。
 
template<int n>
v_reg< int, n *2 > cv::v_floor (const v_reg< double, n > &a)
 
template<int n>
v_reg< int, n > cv::v_floor (const v_reg< float, n > &a)
 要素の切り捨て。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_fma (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< _Tp, n > &c)
 乗算して加算する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_ge (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 以上の比較。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_gt (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 より大きいかの比較。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_interleave_pairs (const v_reg< _Tp, n > &vec)
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_interleave_quads (const v_reg< _Tp, n > &vec)
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_invsqrt (const v_reg< _Tp, n > &a)
 逆平方根。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_le (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 以下の比較。
 
template<typename _Tp >
v_reg< _Tp, simd128_width/sizeof(_Tp)> cv::v_load (const _Tp *ptr)
 メモリからレジスタ内容をロードする。
 
template<typename _Tp >
v_reg< _Tp, simd128_width/sizeof(_Tp)> cv::v_load_aligned (const _Tp *ptr)
 メモリからレジスタ内容をロードする(アラインメント済み)
 
template<typename _Tp , int n>
void cv::v_load_deinterleave (const _Tp *ptr, v_reg< _Tp, n > &a, v_reg< _Tp, n > &b)
 ロードしてデインターリーブする(2チャンネル)
 
template<typename _Tp , int n>
void cv::v_load_deinterleave (const _Tp *ptr, v_reg< _Tp, n > &a, v_reg< _Tp, n > &b, v_reg< _Tp, n > &c)
 ロードしてデインターリーブする(3チャンネル)
 
template<typename _Tp , int n>
void cv::v_load_deinterleave (const _Tp *ptr, v_reg< _Tp, n > &a, v_reg< _Tp, n > &b, v_reg< _Tp, n > &c, v_reg< _Tp, n > &d)
 ロードしてデインターリーブする(4チャンネル)
 
template<typename _Tp >
v_reg< typename V_TypeTraits< _Tp >::w_type, simd128_width/sizeof(typename V_TypeTraits< _Tp >::w_type)> cv::v_load_expand (const _Tp *ptr)
 メモリからレジスタ内容を倍展開してロードする。
 
v_reg< float, simd128_width/sizeof(float)> cv::v_load_expand (const hfloat *ptr)
 
template<typename _Tp >
v_reg< typename V_TypeTraits< _Tp >::q_type, simd128_width/sizeof(typename V_TypeTraits< _Tp >::q_type)> cv::v_load_expand_q (const _Tp *ptr)
 メモリからレジスタ内容を4倍展開してロードする。
 
template<typename _Tp >
v_reg< _Tp, simd128_width/sizeof(_Tp)> cv::v_load_halves (const _Tp *loptr, const _Tp *hiptr)
 2つのメモリブロックからレジスタ内容をロードする。
 
template<typename _Tp >
v_reg< _Tp, simd128_width/sizeof(_Tp)> cv::v_load_low (const _Tp *ptr)
 64ビットのデータを下位部分にロードする(上位部分は未定義)。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_log (const v_reg< _Tp, n > &a)
 要素の自然対数 \( \log(x) \)。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_lt (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 未満の比較。
 
template<typename _Tp >
v_reg< _Tp, simd128_width/sizeof(_Tp)> cv::v_lut (const _Tp *tab, const int *idx)
 
template<int n>
v_reg< double, n/2 > cv::v_lut (const double *tab, const v_reg< int, n > &idx)
 
template<int n>
v_reg< float, n > cv::v_lut (const float *tab, const v_reg< int, n > &idx)
 
template<int n>
v_reg< int, n > cv::v_lut (const int *tab, const v_reg< int, n > &idx)
 
template<int n>
v_reg< unsigned, n > cv::v_lut (const unsigned *tab, const v_reg< int, n > &idx)
 
template<int n>
void cv::v_lut_deinterleave (const double *tab, const v_reg< int, n *2 > &idx, v_reg< double, n > &x, v_reg< double, n > &y)
 
template<int n>
void cv::v_lut_deinterleave (const float *tab, const v_reg< int, n > &idx, v_reg< float, n > &x, v_reg< float, n > &y)
 
template<typename _Tp >
v_reg< _Tp, simd128_width/sizeof(_Tp)> cv::v_lut_pairs (const _Tp *tab, const int *idx)
 
template<typename _Tp >
v_reg< _Tp, simd128_width/sizeof(_Tp)> cv::v_lut_quads (const _Tp *tab, const int *idx)
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_magnitude (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 大きさ。
 
template<int n>
v_reg< float, n > cv::v_matmul (const v_reg< float, n > &v, const v_reg< float, n > &a, const v_reg< float, n > &b, const v_reg< float, n > &c, const v_reg< float, n > &d)
 行列の乗算。
 
template<int n>
v_reg< float, n > cv::v_matmuladd (const v_reg< float, n > &v, const v_reg< float, n > &a, const v_reg< float, n > &b, const v_reg< float, n > &c, const v_reg< float, n > &d)
 行列の乗算と加算。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_max (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 各ペアの最大値を選択する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_min (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 各ペアの最小値を選択する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_mul (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 値を乗算する。
 
template<typename _Tp , int n>
void cv::v_mul_expand (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > &c, v_reg< typename V_TypeTraits< _Tp >::w_type, n/2 > &d)
 乗算して拡張する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_mul_hi (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 乗算して上位部分を取り出す。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_mul_wrap (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 飽和なしで値を乗算する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_muladd (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< _Tp, n > &c)
 v_fma の別名。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_ne (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 非等価の比較。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_not (const v_reg< _Tp, n > &a)
 ビットごとのNOT。
 
template<int n>
v_reg< double, n > cv::v_not_nan (const v_reg< double, n > &a)
 
template<int n>
v_reg< float, n > cv::v_not_nan (const v_reg< float, n > &a)
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_or (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 ビットごとのOR。
 
template<int n>
void cv::v_pack_store (hfloat *ptr, const v_reg< float, n > &v)
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_pack_triplets (const v_reg< _Tp, n > &vec)
 
template<typename _Tp , int n>
v_reg< typename V_TypeTraits< _Tp >::abs_type, n > cv::v_popcount (const v_reg< _Tp, n > &a)
 ベクトルの各レーン内の1のビット数を数え、対応する符号なし型として結果を返す。
 
template<typename _Tp , int n>
void cv::v_recombine (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, v_reg< _Tp, n > &low, v_reg< _Tp, n > &high)
 2つの別のベクトルの下位部分と上位部分から2つのベクトルを結合する。
 
template<typename _Tp , int n>
_Tp cv::v_reduce_max (const v_reg< _Tp, n > &a)
 1つの最大値を求める。
 
template<typename _Tp , int n>
_Tp cv::v_reduce_min (const v_reg< _Tp, n > &a)
 1つの最小値を求める。
 
template<typename _Tp , int n>
V_TypeTraits< typenameV_TypeTraits< _Tp >::abs_type >::sum_type cv::v_reduce_sad (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 値の絶対差の総和を求める。
 
template<typename _Tp , int n>
V_TypeTraits< _Tp >::sum_type cv::v_reduce_sum (const v_reg< _Tp, n > &a)
 パックされた値を合計する。
 
template<int n>
v_reg< float, n > cv::v_reduce_sum4 (const v_reg< float, n > &a, const v_reg< float, n > &b, const v_reg< float, n > &c, const v_reg< float, n > &d)
 各入力ベクトルのすべての要素を合計し、合計のベクトルを返す。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_reverse (const v_reg< _Tp, n > &a)
 ベクトルの順序を反転する。
 
template<int imm, typename _Tp , int n>
v_reg< _Tp, n > cv::v_rotate_left (const v_reg< _Tp, n > &a)
 ベクトル内で要素を左にシフトする。
 
template<int imm, typename _Tp , int n>
v_reg< _Tp, n > cv::v_rotate_left (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 
template<int imm, typename _Tp , int n>
v_reg< _Tp, n > cv::v_rotate_right (const v_reg< _Tp, n > &a)
 ベクトル内で要素を右にシフトする。
 
template<int imm, typename _Tp , int n>
v_reg< _Tp, n > cv::v_rotate_right (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 
template<int n>
v_reg< int, n *2 > cv::v_round (const v_reg< double, n > &a)
 
template<int n>
v_reg< int, n *2 > cv::v_round (const v_reg< double, n > &a, const v_reg< double, n > &b)
 
template<int n>
v_reg< int, n > cv::v_round (const v_reg< float, n > &a)
 要素を丸める。
 
template<typename _Tp , int n>
int cv::v_scan_forward (const v_reg< _Tp, n > &a)
 最初の負の値を持つレーンのインデックスを取得する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_select (const v_reg< _Tp, n > &mask, const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 要素ごとの選択 (ブレンド演算)
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_shl (const v_reg< _Tp, n > &a, int imm)
 ビットごとの左シフト。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_shr (const v_reg< _Tp, n > &a, int imm)
 ビットごとの右シフト。
 
template<typename _Tp , int n>
int cv::v_signmask (const v_reg< _Tp, n > &a)
 負の値のマスクを取得する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_sin (const v_reg< _Tp, n > &a)
 要素の正弦 \( sin(x) \)。
 
template<typename _Tp , int n>
void cv::v_sincos (const v_reg< _Tp, n > &x, v_reg< _Tp, n > &s, v_reg< _Tp, n > &c)
 要素の正弦 \( sin(x) \) と余弦 \( cos(x) \) を同時に計算する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_sqr_magnitude (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 大きさの2乗。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_sqrt (const v_reg< _Tp, n > &a)
 要素の平方根。
 
template<typename _Tp , int n>
void cv::v_store (_Tp *ptr, const v_reg< _Tp, n > &a)
 データをメモリに格納する。
 
template<typename _Tp , int n>
void cv::v_store (_Tp *ptr, const v_reg< _Tp, n > &a, hal::StoreMode)
 
template<typename _Tp , int n>
void cv::v_store_aligned (_Tp *ptr, const v_reg< _Tp, n > &a)
 データをメモリに格納する (アライメント済み)
 
template<typename _Tp , int n>
void cv::v_store_aligned (_Tp *ptr, const v_reg< _Tp, n > &a, hal::StoreMode)
 
template<typename _Tp , int n>
void cv::v_store_aligned_nocache (_Tp *ptr, const v_reg< _Tp, n > &a)
 
template<typename _Tp , int n>
void cv::v_store_high (_Tp *ptr, const v_reg< _Tp, n > &a)
 データをメモリに格納する (上位半分)
 
template<typename _Tp , int n>
void cv::v_store_interleave (_Tp *ptr, const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< _Tp, n > &c, const v_reg< _Tp, n > &d, hal::StoreMode=hal::STORE_UNALIGNED)
 インターリーブして格納する (4チャンネル)
 
template<typename _Tp , int n>
void cv::v_store_interleave (_Tp *ptr, const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, const v_reg< _Tp, n > &c, hal::StoreMode=hal::STORE_UNALIGNED)
 インターリーブして格納する (3チャンネル)
 
template<typename _Tp , int n>
void cv::v_store_interleave (_Tp *ptr, const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b, hal::StoreMode=hal::STORE_UNALIGNED)
 インターリーブして格納する (2チャンネル)
 
template<typename _Tp , int n>
void cv::v_store_low (_Tp *ptr, const v_reg< _Tp, n > &a)
 データをメモリに格納する (下位半分)
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_sub (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 値を減算する。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_sub_wrap (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 飽和なしで値を減算する。
 
template<typename _Tp , int n>
void cv::v_transpose4x4 (v_reg< _Tp, n > &a0, const v_reg< _Tp, n > &a1, const v_reg< _Tp, n > &a2, const v_reg< _Tp, n > &a3, v_reg< _Tp, n > &b0, v_reg< _Tp, n > &b1, v_reg< _Tp, n > &b2, v_reg< _Tp, n > &b3)
 4x4行列を転置する。
 
template<int n>
v_reg< int, n *2 > cv::v_trunc (const v_reg< double, n > &a)
 
template<int n>
v_reg< int, n > cv::v_trunc (const v_reg< float, n > &a)
 要素を切り捨てる。
 
template<typename _Tp , int n>
v_reg< _Tp, n > cv::v_xor (const v_reg< _Tp, n > &a, const v_reg< _Tp, n > &b)
 ビットごとのXOR。
 
template<typename _Tp , int n>
void cv::v_zip (const v_reg< _Tp, n > &a0, const v_reg< _Tp, n > &a1, v_reg< _Tp, n > &b0, v_reg< _Tp, n > &b1)
 2つのベクトルをインターリーブする。
 
Init with zero

ゼロ要素を持つ新しいベクトルを作成する

v_float32x8 cv::v256_setzero_f32 ()
 
v_float64x4 cv::v256_setzero_f64 ()
 
v_int16x16 cv::v256_setzero_s16 ()
 
v_int32x8 cv::v256_setzero_s32 ()
 
v_int64x4 cv::v256_setzero_s64 ()
 
v_int8x32 cv::v256_setzero_s8 ()
 
v_uint16x16 cv::v256_setzero_u16 ()
 
v_uint32x8 cv::v256_setzero_u32 ()
 
v_uint64x4 cv::v256_setzero_u64 ()
 
v_uint8x32 cv::v256_setzero_u8 ()
 
v_float32x16 cv::v512_setzero_f32 ()
 
v_float64x8 cv::v512_setzero_f64 ()
 
v_int16x32 cv::v512_setzero_s16 ()
 
v_int32x16 cv::v512_setzero_s32 ()
 
v_int64x8 cv::v512_setzero_s64 ()
 
v_int8x64 cv::v512_setzero_s8 ()
 
v_uint16x32 cv::v512_setzero_u16 ()
 
v_uint32x16 cv::v512_setzero_u32 ()
 
v_uint64x8 cv::v512_setzero_u64 ()
 
v_uint8x64 cv::v512_setzero_u8 ()
 
template<>
v_uint8x16 cv::v_setzero_ ()
 
template<>
v_int8x16 cv::v_setzero_ ()
 
template<>
v_uint16x8 cv::v_setzero_ ()
 
template<>
v_int16x8 cv::v_setzero_ ()
 
template<>
v_uint32x4 cv::v_setzero_ ()
 
template<>
v_int32x4 cv::v_setzero_ ()
 
template<>
v_float32x4 cv::v_setzero_ ()
 
template<>
v_float64x2 cv::v_setzero_ ()
 
template<>
v_uint64x2 cv::v_setzero_ ()
 
template<>
v_int64x2 cv::v_setzero_ ()
 
template<>
v_uint8x32 cv::v_setzero_ ()
 
template<>
v_int8x32 cv::v_setzero_ ()
 
template<>
v_uint16x16 cv::v_setzero_ ()
 
template<>
v_int16x16 cv::v_setzero_ ()
 
template<>
v_uint32x8 cv::v_setzero_ ()
 
template<>
v_int32x8 cv::v_setzero_ ()
 
template<>
v_float32x8 cv::v_setzero_ ()
 
template<>
v_float64x4 cv::v_setzero_ ()
 
template<>
v_uint64x4 cv::v_setzero_ ()
 
template<>
v_int64x4 cv::v_setzero_ ()
 
template<>
v_uint8x64 cv::v_setzero_ ()
 
template<>
v_int8x64 cv::v_setzero_ ()
 
template<>
v_uint16x32 cv::v_setzero_ ()
 
template<>
v_int16x32 cv::v_setzero_ ()
 
template<>
v_uint32x16 cv::v_setzero_ ()
 
template<>
v_int32x16 cv::v_setzero_ ()
 
template<>
v_float32x16 cv::v_setzero_ ()
 
template<>
v_float64x8 cv::v_setzero_ ()
 
template<>
v_uint64x8 cv::v_setzero_ ()
 
template<>
v_int64x8 cv::v_setzero_ ()
 
v_float32x4 cv::v_setzero_f32 ()
 
v_float64x2 cv::v_setzero_f64 ()
 
v_int16x8 cv::v_setzero_s16 ()
 
v_int32x4 cv::v_setzero_s32 ()
 
v_int64x2 cv::v_setzero_s64 ()
 
v_int8x16 cv::v_setzero_s8 ()
 
v_uint16x8 cv::v_setzero_u16 ()
 
v_uint32x4 cv::v_setzero_u32 ()
 
v_uint64x2 cv::v_setzero_u64 ()
 
v_uint8x16 cv::v_setzero_u8 ()
 
Init with value

特定の値に設定された要素を持つ新しいベクトルを作成する

v_float32x8 cv::v256_setall_f32 (float val)
 
v_float64x4 cv::v256_setall_f64 (double val)
 
v_int16x16 cv::v256_setall_s16 (short val)
 
v_int32x8 cv::v256_setall_s32 (int val)
 
v_int64x4 cv::v256_setall_s64 (int64 val)
 
v_int8x32 cv::v256_setall_s8 (schar val)
 
v_uint16x16 cv::v256_setall_u16 (ushort val)
 
v_uint32x8 cv::v256_setall_u32 (unsigned val)
 
v_uint64x4 cv::v256_setall_u64 (uint64 val)
 
v_uint8x32 cv::v256_setall_u8 (uchar val)
 
v_float32x16 cv::v512_setall_f32 (float val)
 
v_float64x8 cv::v512_setall_f64 (double val)
 
v_int16x32 cv::v512_setall_s16 (short val)
 
v_int32x16 cv::v512_setall_s32 (int val)
 
v_int64x8 cv::v512_setall_s64 (int64 val)
 
v_int8x64 cv::v512_setall_s8 (schar val)
 
v_uint16x32 cv::v512_setall_u16 (ushort val)
 
v_uint32x16 cv::v512_setall_u32 (unsigned val)
 
v_uint64x8 cv::v512_setall_u64 (uint64 val)
 
v_uint8x64 cv::v512_setall_u8 (uchar val)
 
template<>
v_float64x2 cv::v_setall_ (double val)
 
template<>
v_float64x4 cv::v_setall_ (double val)
 
template<>
v_float64x8 cv::v_setall_ (double val)
 
template<>
v_float32x4 cv::v_setall_ (float val)
 
template<>
v_float32x8 cv::v_setall_ (float val)
 
template<>
v_float32x16 cv::v_setall_ (float val)
 
template<>
v_int32x4 cv::v_setall_ (int val)
 
template<>
v_int32x8 cv::v_setall_ (int val)
 
template<>
v_int32x16 cv::v_setall_ (int val)
 
template<>
v_int64x2 cv::v_setall_ (int64 val)
 
template<>
v_int64x4 cv::v_setall_ (int64 val)
 
template<>
v_int64x8 cv::v_setall_ (int64 val)
 
template<>
v_int8x16 cv::v_setall_ (schar val)
 
template<>
v_int8x32 cv::v_setall_ (schar val)
 
template<>
v_int8x64 cv::v_setall_ (schar val)
 
template<>
v_int16x8 cv::v_setall_ (short val)
 
template<>
v_int16x16 cv::v_setall_ (short val)
 
template<>
v_int16x32 cv::v_setall_ (short val)
 
template<>
v_uint8x16 cv::v_setall_ (uchar val)
 
template<>
v_uint8x32 cv::v_setall_ (uchar val)
 
template<>
v_uint8x64 cv::v_setall_ (uchar val)
 
template<>
v_uint64x2 cv::v_setall_ (uint64 val)
 
template<>
v_uint64x4 cv::v_setall_ (uint64 val)
 
template<>
v_uint64x8 cv::v_setall_ (uint64 val)
 
template<>
v_uint32x4 cv::v_setall_ (unsigned val)
 
template<>
v_uint32x8 cv::v_setall_ (unsigned val)
 
template<>
v_uint32x16 cv::v_setall_ (unsigned val)
 
template<>
v_uint16x8 cv::v_setall_ (ushort val)
 
template<>
v_uint16x16 cv::v_setall_ (ushort val)
 
template<>
v_uint16x32 cv::v_setall_ (ushort val)
 
v_float32x4 cv::v_setall_f32 (float val)
 
v_float64x2 cv::v_setall_f64 (double val)
 
v_int16x8 cv::v_setall_s16 (short val)
 
v_int32x4 cv::v_setall_s32 (int val)
 
v_int64x2 cv::v_setall_s64 (int64 val)
 
v_int8x16 cv::v_setall_s8 (schar val)
 
v_uint16x8 cv::v_setall_u16 (ushort val)
 
v_uint32x4 cv::v_setall_u32 (unsigned val)
 
v_uint64x2 cv::v_setall_u64 (uint64 val)
 
v_uint8x16 cv::v_setall_u8 (uchar val)
 
Reinterpret

基となるデータを変更せずにベクトルを別の型に変換する。

template<typename _Tp0 , int n0>
v_reg< float, n0 *sizeof(_Tp0)/sizeof(float)> cv::v_reinterpret_as_f32 (const v_reg< _Tp0, n0 > &a)
 
template<typename _Tp0 , int n0>
v_reg< double, n0 *sizeof(_Tp0)/sizeof(double)> cv::v_reinterpret_as_f64 (const v_reg< _Tp0, n0 > &a)
 
template<typename _Tp0 , int n0>
v_reg< short, n0 *sizeof(_Tp0)/sizeof(short)> cv::v_reinterpret_as_s16 (const v_reg< _Tp0, n0 > &a)
 
template<typename _Tp0 , int n0>
v_reg< int, n0 *sizeof(_Tp0)/sizeof(int)> cv::v_reinterpret_as_s32 (const v_reg< _Tp0, n0 > &a)
 
template<typename _Tp0 , int n0>
v_reg< int64, n0 *sizeof(_Tp0)/sizeof(int64)> cv::v_reinterpret_as_s64 (const v_reg< _Tp0, n0 > &a)
 
template<typename _Tp0 , int n0>
v_reg< schar, n0 *sizeof(_Tp0)/sizeof(schar)> cv::v_reinterpret_as_s8 (const v_reg< _Tp0, n0 > &a)
 
template<typename _Tp0 , int n0>
v_reg< ushort, n0 *sizeof(_Tp0)/sizeof(ushort)> cv::v_reinterpret_as_u16 (const v_reg< _Tp0, n0 > &a)
 
template<typename _Tp0 , int n0>
v_reg< unsigned, n0 *sizeof(_Tp0)/sizeof(unsigned)> cv::v_reinterpret_as_u32 (const v_reg< _Tp0, n0 > &a)
 
template<typename _Tp0 , int n0>
v_reg< uint64, n0 *sizeof(_Tp0)/sizeof(uint64)> cv::v_reinterpret_as_u64 (const v_reg< _Tp0, n0 > &a)
 
template<typename _Tp0 , int n0>
v_reg< uchar, n0 *sizeof(_Tp0)/sizeof(uchar)> cv::v_reinterpret_as_u8 (const v_reg< _Tp0, n0 > &a)
 
Left shift

左シフト

template<int shift, int n>
v_reg< int, n > cv::v_shl (const v_reg< int, n > &a)
 
template<int shift, int n>
v_reg< int64, n > cv::v_shl (const v_reg< int64, n > &a)
 
template<int shift, int n>
v_reg< short, n > cv::v_shl (const v_reg< short, n > &a)
 
template<int shift, int n>
v_reg< uint64, n > cv::v_shl (const v_reg< uint64, n > &a)
 
template<int shift, int n>
v_reg< unsigned, n > cv::v_shl (const v_reg< unsigned, n > &a)
 
template<int shift, int n>
v_reg< ushort, n > cv::v_shl (const v_reg< ushort, n > &a)
 
Right shift

右シフト

template<int shift, int n>
v_reg< int, n > cv::v_shr (const v_reg< int, n > &a)
 
template<int shift, int n>
v_reg< int64, n > cv::v_shr (const v_reg< int64, n > &a)
 
template<int shift, int n>
v_reg< short, n > cv::v_shr (const v_reg< short, n > &a)
 
template<int shift, int n>
v_reg< uint64, n > cv::v_shr (const v_reg< uint64, n > &a)
 
template<int shift, int n>
v_reg< unsigned, n > cv::v_shr (const v_reg< unsigned, n > &a)
 
template<int shift, int n>
v_reg< ushort, n > cv::v_shr (const v_reg< ushort, n > &a)
 
Rounding shift

丸めを伴う右シフト

template<int shift, int n>
v_reg< int, n > cv::v_rshr (const v_reg< int, n > &a)
 
template<int shift, int n>
v_reg< int64, n > cv::v_rshr (const v_reg< int64, n > &a)
 
template<int shift, int n>
v_reg< short, n > cv::v_rshr (const v_reg< short, n > &a)
 
template<int shift, int n>
v_reg< uint64, n > cv::v_rshr (const v_reg< uint64, n > &a)
 
template<int shift, int n>
v_reg< unsigned, n > cv::v_rshr (const v_reg< unsigned, n > &a)
 
template<int shift, int n>
v_reg< ushort, n > cv::v_rshr (const v_reg< ushort, n > &a)
 
Pack

2つのベクトルの値を1つにパックする

入力ベクトル型の2倍の要素数を持つベクトル型を返す。u サフィックス付きの変種は、対応する符号なし型にも変換する。

  • pack: 16ビット、32ビット、64ビットの整数入力型用
  • pack_u: 16ビットおよび32ビットの符号付き整数入力型用
覚え書き
64ビットを除くすべての変種は飽和を使用する。
template<int n>
v_reg< short, 2 *n > cv::v_pack (const v_reg< int, n > &a, const v_reg< int, n > &b)
 
template<int n>
v_reg< int, 2 *n > cv::v_pack (const v_reg< int64, n > &a, const v_reg< int64, n > &b)
 
template<int n>
v_reg< schar, 2 *n > cv::v_pack (const v_reg< short, n > &a, const v_reg< short, n > &b)
 
template<int n>
v_reg< unsigned, 2 *n > cv::v_pack (const v_reg< uint64, n > &a, const v_reg< uint64, n > &b)
 
template<int n>
v_reg< ushort, 2 *n > cv::v_pack (const v_reg< unsigned, n > &a, const v_reg< unsigned, n > &b)
 
template<int n>
v_reg< uchar, 2 *n > cv::v_pack (const v_reg< ushort, n > &a, const v_reg< ushort, n > &b)
 
template<int n>
v_reg< ushort, 2 *n > cv::v_pack_u (const v_reg< int, n > &a, const v_reg< int, n > &b)
 
template<int n>
v_reg< uchar, 2 *n > cv::v_pack_u (const v_reg< short, n > &a, const v_reg< short, n > &b)
 
Pack with rounding shift

2つのベクトルの値を、丸めを伴う右シフトで1つにパックする

入力ベクトルの値は丸めを伴って n ビット右にシフトされ、より狭い型に変換されて結果ベクトルとして返される。u サフィックス付きの変種は符号なし型に変換する。

  • pack: 16ビット、32ビット、64ビットの整数入力型用
  • pack_u: 16ビットおよび32ビットの符号付き整数入力型用
覚え書き
64ビットを除くすべての変種は飽和を使用する。
template<int shift, int n>
v_reg< short, 2 *n > cv::v_rshr_pack (const v_reg< int, n > &a, const v_reg< int, n > &b)
 
template<int shift, int n>
v_reg< int, 2 *n > cv::v_rshr_pack (const v_reg< int64, n > &a, const v_reg< int64, n > &b)
 
template<int shift, int n>
v_reg< schar, 2 *n > cv::v_rshr_pack (const v_reg< short, n > &a, const v_reg< short, n > &b)
 
template<int shift, int n>
v_reg< unsigned, 2 *n > cv::v_rshr_pack (const v_reg< uint64, n > &a, const v_reg< uint64, n > &b)
 
template<int shift, int n>
v_reg< ushort, 2 *n > cv::v_rshr_pack (const v_reg< unsigned, n > &a, const v_reg< unsigned, n > &b)
 
template<int shift, int n>
v_reg< uchar, 2 *n > cv::v_rshr_pack (const v_reg< ushort, n > &a, const v_reg< ushort, n > &b)
 
template<int shift, int n>
v_reg< ushort, 2 *n > cv::v_rshr_pack_u (const v_reg< int, n > &a, const v_reg< int, n > &b)
 
template<int shift, int n>
v_reg< uchar, 2 *n > cv::v_rshr_pack_u (const v_reg< short, n > &a, const v_reg< short, n > &b)
 
Pack and store

入力ベクトルの値をパックしてメモリに格納する

値はより狭い型に変換されてメモリに格納される。u サフィックス付きの変種は、対応する符号なし型に変換する。

  • pack: 16ビット、32ビット、64ビットの整数入力型用
  • pack_u: 16ビットおよび32ビットの符号付き整数入力型用
覚え書き
64ビットを除くすべての変種は飽和を使用する。
template<int n>
void cv::v_pack_store (int *ptr, const v_reg< int64, n > &a)
 
template<int n>
void cv::v_pack_store (schar *ptr, const v_reg< short, n > &a)
 
template<int n>
void cv::v_pack_store (short *ptr, const v_reg< int, n > &a)
 
template<int n>
void cv::v_pack_store (uchar *ptr, const v_reg< ushort, n > &a)
 
template<int n>
void cv::v_pack_store (unsigned *ptr, const v_reg< uint64, n > &a)
 
template<int n>
void cv::v_pack_store (ushort *ptr, const v_reg< unsigned, n > &a)
 
template<int n>
void cv::v_pack_u_store (uchar *ptr, const v_reg< short, n > &a)
 
template<int n>
void cv::v_pack_u_store (ushort *ptr, const v_reg< int, n > &a)
 
Pack and store with rounding shift

入力ベクトルの値をパックしてメモリに格納する

値は丸めを伴って n ビット右にシフトされ、より狭い型に変換されてメモリに格納される。u サフィックス付きの変種は符号なし型に変換する。

  • pack: 16ビット、32ビット、64ビットの整数入力型用
  • pack_u: 16ビットおよび32ビットの符号付き整数入力型用
覚え書き
64ビットを除くすべての変種は飽和を使用する。
template<int shift, int n>
void cv::v_rshr_pack_store (int *ptr, const v_reg< int64, n > &a)
 
template<int shift, int n>
void cv::v_rshr_pack_store (schar *ptr, const v_reg< short, n > &a)
 
template<int shift, int n>
void cv::v_rshr_pack_store (short *ptr, const v_reg< int, n > &a)
 
template<int shift, int n>
void cv::v_rshr_pack_store (uchar *ptr, const v_reg< ushort, n > &a)
 
template<int shift, int n>
void cv::v_rshr_pack_store (unsigned *ptr, const v_reg< uint64, n > &a)
 
template<int shift, int n>
void cv::v_rshr_pack_store (ushort *ptr, const v_reg< unsigned, n > &a)
 
template<int shift, int n>
void cv::v_rshr_pack_u_store (uchar *ptr, const v_reg< short, n > &a)
 
template<int shift, int n>
void cv::v_rshr_pack_u_store (ushort *ptr, const v_reg< int, n > &a)
 
Pack boolean values

複数のベクトルのブール値を1つの符号なし8ビット整数ベクトルにパックする

覚え書き
すべてのアーキテクチャで同じ結果を保証するため、有効なブール値を与えなければならない。
template<int n>
v_reg< uchar, 8 *n > cv::v_pack_b (const v_reg< uint64, n > &a, const v_reg< uint64, n > &b, const v_reg< uint64, n > &c, const v_reg< uint64, n > &d, const v_reg< uint64, n > &e, const v_reg< uint64, n > &f, const v_reg< uint64, n > &g, const v_reg< uint64, n > &h)
 
template<int n>
v_reg< uchar, 4 *n > cv::v_pack_b (const v_reg< unsigned, n > &a, const v_reg< unsigned, n > &b, const v_reg< unsigned, n > &c, const v_reg< unsigned, n > &d)
 
template<int n>
v_reg< uchar, 2 *n > cv::v_pack_b (const v_reg< ushort, n > &a, const v_reg< ushort, n > &b)
 ! 16ビットのブール値用
 

変数

static const unsigned char cv::popCountTable []