# 接口 核心功能 » 硬件加速层

## 模块

Element-wise minimum or maximum

Element-wise absolute difference

Bitwise logical operations

Element-wise compare

Element-wise multiply

Element-wise divide

Element-wise reciprocial

Element-wise weighted sum

Channel split

Channel merge

Atan calculation

Magnitude calculation

Inverse square root calculation

Square root calculation

Natural logarithm calculation

Exponent calculation

LU matrix decomposition

Cholesky matrix decomposition

Singular value matrix decomposition

QR matrix decomposition

Matrix multiplication

## 类

struct   cvhalDFT
Dummy structure storing DFT/DCT context. 更多...

## 函数

int  hal_ni_dct2D ( cvhalDFT *context, const uchar *src_data, size_t src_step, uchar *dst_data, size_t dst_step)

int  hal_ni_dctFree2D ( cvhalDFT *context)

int  hal_ni_dctInit2D ( cvhalDFT **context, int width, int height, int depth, int flags)

int  hal_ni_dft1D ( cvhalDFT *context, const uchar *src, uchar *dst)

int  hal_ni_dft2D ( cvhalDFT *context, const uchar *src_data, size_t src_step, uchar *dst_data, size_t dst_step)

int  hal_ni_dftFree1D ( cvhalDFT *context)

int  hal_ni_dftFree2D ( cvhalDFT *context)

int  hal_ni_dftInit1D ( cvhalDFT **context, int len, int count, int depth, int flags, bool *needBuffer)

int  hal_ni_dftInit2D ( cvhalDFT **context, int width, int height, int depth, int src_channels, int dst_channels, int flags, int nonzero_rows)

int  hal_ni_minMaxIdx (const uchar *src_data, size_t src_step, int width, int height, int depth, double *minVal, double *maxVal, int *minIdx, int *maxIdx, uchar *mask)
Finds the global minimum and maximum in an array. 更多...

## Return codes

#define  CV_HAL_ERROR_OK    0

#define  CV_HAL_ERROR_NOT_IMPLEMENTED    1

#define  CV_HAL_ERROR_UNKNOWN    -1

## Data types

• schar - signed 1 byte integer
• uchar - unsigned 1 byte integer
• short - signed 2 byte integer
• ushort - unsigned 2 byte integer
• int - signed 4 byte integer
• uint - unsigned 4 byte integer
• int64 - signed 8 byte integer
• uint64 - unsigned 8 byte integer
typedef uint32_t  uint

typedef signed char  schar

typedef unsigned char  uchar

typedef unsigned short  ushort

typedef int64_t  int64

typedef uint64_t  uint64

#define  CV_BIG_INT (n)   n##LL

#define  CV_BIG_UINT (n)   n##ULL

#define  CV_USRTYPE1    (void)"CV_USRTYPE1 support has been dropped in OpenCV 4.0"

#define  CV_CN_MAX    512

#define  CV_CN_SHIFT    3

#define  CV_DEPTH_MAX    (1 << CV_CN_SHIFT )

#define  CV_8U    0

#define  CV_8S    1

#define  CV_16U    2

#define  CV_16S    3

#define  CV_32S    4

#define  CV_32F    5

#define  CV_64F    6

#define  CV_16F    7

#define  CV_MAT_DEPTH_MASK    ( CV_DEPTH_MAX - 1)

#define  CV_MAT_DEPTH (flags)   ((flags) & CV_MAT_DEPTH_MASK )

#define  CV_MAKETYPE (depth, cn)   ( CV_MAT_DEPTH (depth) + (((cn)-1) << CV_CN_SHIFT ))

#define  CV_MAKE_TYPE     CV_MAKETYPE

#define  CV_8UC1     CV_MAKETYPE ( CV_8U ,1)

#define  CV_8UC2     CV_MAKETYPE ( CV_8U ,2)

#define  CV_8UC3     CV_MAKETYPE ( CV_8U ,3)

#define  CV_8UC4     CV_MAKETYPE ( CV_8U ,4)

#define  CV_8UC (n)    CV_MAKETYPE ( CV_8U ,(n))

#define  CV_8SC1     CV_MAKETYPE ( CV_8S ,1)

#define  CV_8SC2     CV_MAKETYPE ( CV_8S ,2)

#define  CV_8SC3     CV_MAKETYPE ( CV_8S ,3)

#define  CV_8SC4     CV_MAKETYPE ( CV_8S ,4)

#define  CV_8SC (n)    CV_MAKETYPE ( CV_8S ,(n))

#define  CV_16UC1     CV_MAKETYPE ( CV_16U ,1)

#define  CV_16UC2     CV_MAKETYPE ( CV_16U ,2)

#define  CV_16UC3     CV_MAKETYPE ( CV_16U ,3)

#define  CV_16UC4     CV_MAKETYPE ( CV_16U ,4)

#define  CV_16UC (n)    CV_MAKETYPE ( CV_16U ,(n))

#define  CV_16SC1     CV_MAKETYPE ( CV_16S ,1)

#define  CV_16SC2     CV_MAKETYPE ( CV_16S ,2)

#define  CV_16SC3     CV_MAKETYPE ( CV_16S ,3)

#define  CV_16SC4     CV_MAKETYPE ( CV_16S ,4)

#define  CV_16SC (n)    CV_MAKETYPE ( CV_16S ,(n))

#define  CV_32SC1     CV_MAKETYPE ( CV_32S ,1)

#define  CV_32SC2     CV_MAKETYPE ( CV_32S ,2)

#define  CV_32SC3     CV_MAKETYPE ( CV_32S ,3)

#define  CV_32SC4     CV_MAKETYPE ( CV_32S ,4)

#define  CV_32SC (n)    CV_MAKETYPE ( CV_32S ,(n))

#define  CV_32FC1     CV_MAKETYPE ( CV_32F ,1)

#define  CV_32FC2     CV_MAKETYPE ( CV_32F ,2)

#define  CV_32FC3     CV_MAKETYPE ( CV_32F ,3)

#define  CV_32FC4     CV_MAKETYPE ( CV_32F ,4)

#define  CV_32FC (n)    CV_MAKETYPE ( CV_32F ,(n))

#define  CV_64FC1     CV_MAKETYPE ( CV_64F ,1)

#define  CV_64FC2     CV_MAKETYPE ( CV_64F ,2)

#define  CV_64FC3     CV_MAKETYPE ( CV_64F ,3)

#define  CV_64FC4     CV_MAKETYPE ( CV_64F ,4)

#define  CV_64FC (n)    CV_MAKETYPE ( CV_64F ,(n))

#define  CV_16FC1     CV_MAKETYPE ( CV_16F ,1)

#define  CV_16FC2     CV_MAKETYPE ( CV_16F ,2)

#define  CV_16FC3     CV_MAKETYPE ( CV_16F ,3)

#define  CV_16FC4     CV_MAKETYPE ( CV_16F ,4)

#define  CV_16FC (n)    CV_MAKETYPE ( CV_16F ,(n))

## Comparison operation

cv::CmpTypes
#define  CV_HAL_CMP_EQ    0

#define  CV_HAL_CMP_GT    1

#define  CV_HAL_CMP_GE    2

#define  CV_HAL_CMP_LT    3

#define  CV_HAL_CMP_LE    4

#define  CV_HAL_CMP_NE    5

## Border processing modes

cv::BorderTypes
#define  CV_HAL_BORDER_CONSTANT    0

#define  CV_HAL_BORDER_REPLICATE    1

#define  CV_HAL_BORDER_REFLECT    2

#define  CV_HAL_BORDER_WRAP    3

#define  CV_HAL_BORDER_REFLECT_101    4

#define  CV_HAL_BORDER_TRANSPARENT    5

#define  CV_HAL_BORDER_ISOLATED    16

## DFT flags

#define  CV_HAL_DFT_INVERSE    1

#define  CV_HAL_DFT_SCALE    2

#define  CV_HAL_DFT_ROWS    4

#define  CV_HAL_DFT_COMPLEX_OUTPUT    16

#define  CV_HAL_DFT_REAL_OUTPUT    32

#define  CV_HAL_DFT_TWO_STAGE    64

#define  CV_HAL_DFT_STAGE_COLS    128

#define  CV_HAL_DFT_IS_CONTINUOUS    512

#define  CV_HAL_DFT_IS_INPLACE    1024

## SVD flags

#define  CV_HAL_SVD_NO_UV    1

#define  CV_HAL_SVD_SHORT_UV    2

#define  CV_HAL_SVD_MODIFY_A    4

#define  CV_HAL_SVD_FULL_UV    8

## Gemm flags

#define  CV_HAL_GEMM_1_T    1

#define  CV_HAL_GEMM_2_T    2

#define  CV_HAL_GEMM_3_T    4

## 详细描述

Define your functions to override default implementations:

## ◆  CV_16F

 #define CV_16F   7

## ◆  CV_16FC

 #define CV_16FC ( n ) CV_MAKETYPE ( CV_16F ,(n))

## ◆  CV_16FC1

 #define CV_16FC1    CV_MAKETYPE ( CV_16F ,1)

## ◆  CV_16FC2

 #define CV_16FC2    CV_MAKETYPE ( CV_16F ,2)

## ◆  CV_16FC3

 #define CV_16FC3    CV_MAKETYPE ( CV_16F ,3)

## ◆  CV_16FC4

 #define CV_16FC4    CV_MAKETYPE ( CV_16F ,4)

## ◆  CV_16SC

 #define CV_16SC ( n ) CV_MAKETYPE ( CV_16S ,(n))

## ◆  CV_16SC1

 #define CV_16SC1    CV_MAKETYPE ( CV_16S ,1)

## ◆  CV_16SC2

 #define CV_16SC2    CV_MAKETYPE ( CV_16S ,2)

## ◆  CV_16SC3

 #define CV_16SC3    CV_MAKETYPE ( CV_16S ,3)

## ◆  CV_16SC4

 #define CV_16SC4    CV_MAKETYPE ( CV_16S ,4)

## ◆  CV_16U

 #define CV_16U   2

## ◆  CV_16UC

 #define CV_16UC ( n ) CV_MAKETYPE ( CV_16U ,(n))

## ◆  CV_16UC1

 #define CV_16UC1    CV_MAKETYPE ( CV_16U ,1)

## ◆  CV_16UC2

 #define CV_16UC2    CV_MAKETYPE ( CV_16U ,2)

## ◆  CV_16UC3

 #define CV_16UC3    CV_MAKETYPE ( CV_16U ,3)

## ◆  CV_16UC4

 #define CV_16UC4    CV_MAKETYPE ( CV_16U ,4)

## ◆  CV_32FC

 #define CV_32FC ( n ) CV_MAKETYPE ( CV_32F ,(n))

## ◆  CV_32FC2

 #define CV_32FC2    CV_MAKETYPE ( CV_32F ,2)

## ◆  CV_32FC3

 #define CV_32FC3    CV_MAKETYPE ( CV_32F ,3)

## ◆  CV_32FC4

 #define CV_32FC4    CV_MAKETYPE ( CV_32F ,4)

## ◆  CV_32SC

 #define CV_32SC ( n ) CV_MAKETYPE ( CV_32S ,(n))

## ◆  CV_32SC1

 #define CV_32SC1    CV_MAKETYPE ( CV_32S ,1)

## ◆  CV_32SC2

 #define CV_32SC2    CV_MAKETYPE ( CV_32S ,2)

## ◆  CV_32SC3

 #define CV_32SC3    CV_MAKETYPE ( CV_32S ,3)

## ◆  CV_32SC4

 #define CV_32SC4    CV_MAKETYPE ( CV_32S ,4)

## ◆  CV_64FC

 #define CV_64FC ( n ) CV_MAKETYPE ( CV_64F ,(n))

## ◆  CV_64FC1

 #define CV_64FC1    CV_MAKETYPE ( CV_64F ,1)

## ◆  CV_64FC2

 #define CV_64FC2    CV_MAKETYPE ( CV_64F ,2)

## ◆  CV_64FC3

 #define CV_64FC3    CV_MAKETYPE ( CV_64F ,3)

## ◆  CV_64FC4

 #define CV_64FC4    CV_MAKETYPE ( CV_64F ,4)

## ◆  CV_8S

 #define CV_8S   1

## ◆  CV_8SC

 #define CV_8SC ( n ) CV_MAKETYPE ( CV_8S ,(n))

## ◆  CV_8SC1

 #define CV_8SC1    CV_MAKETYPE ( CV_8S ,1)

## ◆  CV_8SC2

 #define CV_8SC2    CV_MAKETYPE ( CV_8S ,2)

## ◆  CV_8SC3

 #define CV_8SC3    CV_MAKETYPE ( CV_8S ,3)

## ◆  CV_8SC4

 #define CV_8SC4    CV_MAKETYPE ( CV_8S ,4)

## ◆  CV_8UC

 #define CV_8UC ( n ) CV_MAKETYPE ( CV_8U ,(n))

## ◆  CV_8UC2

 #define CV_8UC2    CV_MAKETYPE ( CV_8U ,2)

## ◆  CV_8UC4

 #define CV_8UC4    CV_MAKETYPE ( CV_8U ,4)

## ◆  CV_BIG_INT

 #define CV_BIG_INT ( n ) n##LL

## ◆  CV_BIG_UINT

 #define CV_BIG_UINT ( n ) n##ULL

## ◆  CV_CN_MAX

 #define CV_CN_MAX   512

## ◆  CV_CN_SHIFT

 #define CV_CN_SHIFT   3

## ◆  CV_DEPTH_MAX

 #define CV_DEPTH_MAX   (1 << CV_CN_SHIFT )

## ◆  CV_HAL_BORDER_CONSTANT

 #define CV_HAL_BORDER_CONSTANT   0

## ◆  CV_HAL_BORDER_ISOLATED

 #define CV_HAL_BORDER_ISOLATED   16

## ◆  CV_HAL_BORDER_REFLECT

 #define CV_HAL_BORDER_REFLECT   2

## ◆  CV_HAL_BORDER_REFLECT_101

 #define CV_HAL_BORDER_REFLECT_101   4

## ◆  CV_HAL_BORDER_REPLICATE

 #define CV_HAL_BORDER_REPLICATE   1

## ◆  CV_HAL_BORDER_TRANSPARENT

 #define CV_HAL_BORDER_TRANSPARENT   5

## ◆  CV_HAL_BORDER_WRAP

 #define CV_HAL_BORDER_WRAP   3

## ◆  CV_HAL_CMP_EQ

 #define CV_HAL_CMP_EQ   0

## ◆  CV_HAL_CMP_GE

 #define CV_HAL_CMP_GE   2

## ◆  CV_HAL_CMP_GT

 #define CV_HAL_CMP_GT   1

## ◆  CV_HAL_CMP_LE

 #define CV_HAL_CMP_LE   4

## ◆  CV_HAL_CMP_LT

 #define CV_HAL_CMP_LT   3

## ◆  CV_HAL_CMP_NE

 #define CV_HAL_CMP_NE   5

## ◆  CV_HAL_DFT_COMPLEX_OUTPUT

 #define CV_HAL_DFT_COMPLEX_OUTPUT   16

## ◆  CV_HAL_DFT_INVERSE

 #define CV_HAL_DFT_INVERSE   1

## ◆  CV_HAL_DFT_IS_CONTINUOUS

 #define CV_HAL_DFT_IS_CONTINUOUS   512

## ◆  CV_HAL_DFT_IS_INPLACE

 #define CV_HAL_DFT_IS_INPLACE   1024

## ◆  CV_HAL_DFT_REAL_OUTPUT

 #define CV_HAL_DFT_REAL_OUTPUT   32

## ◆  CV_HAL_DFT_ROWS

 #define CV_HAL_DFT_ROWS   4

## ◆  CV_HAL_DFT_SCALE

 #define CV_HAL_DFT_SCALE   2

## ◆  CV_HAL_DFT_STAGE_COLS

 #define CV_HAL_DFT_STAGE_COLS   128

## ◆  CV_HAL_DFT_TWO_STAGE

 #define CV_HAL_DFT_TWO_STAGE   64

## ◆  CV_HAL_ERROR_NOT_IMPLEMENTED

 #define CV_HAL_ERROR_NOT_IMPLEMENTED   1

## ◆  CV_HAL_ERROR_OK

 #define CV_HAL_ERROR_OK   0

## ◆  CV_HAL_ERROR_UNKNOWN

 #define CV_HAL_ERROR_UNKNOWN   -1

## ◆  CV_HAL_GEMM_1_T

 #define CV_HAL_GEMM_1_T   1

## ◆  CV_HAL_GEMM_2_T

 #define CV_HAL_GEMM_2_T   2

## ◆  CV_HAL_GEMM_3_T

 #define CV_HAL_GEMM_3_T   4

## ◆  CV_HAL_SVD_FULL_UV

 #define CV_HAL_SVD_FULL_UV   8

## ◆  CV_HAL_SVD_MODIFY_A

 #define CV_HAL_SVD_MODIFY_A   4

## ◆  CV_HAL_SVD_NO_UV

 #define CV_HAL_SVD_NO_UV   1

## ◆  CV_HAL_SVD_SHORT_UV

 #define CV_HAL_SVD_SHORT_UV   2

## ◆  CV_MAKE_TYPE

 #define CV_MAKE_TYPE    CV_MAKETYPE

## ◆  CV_MAKETYPE

 #define CV_MAKETYPE ( depth, cn ) ( CV_MAT_DEPTH (depth) + (((cn)-1) << CV_CN_SHIFT ))

## ◆  CV_MAT_DEPTH

 #define CV_MAT_DEPTH ( flags ) ((flags) & CV_MAT_DEPTH_MASK )

 #define CV_MAT_DEPTH_MASK   ( CV_DEPTH_MAX - 1)

## ◆  CV_USRTYPE1

 #define CV_USRTYPE1   (void)"CV_USRTYPE1 support has been dropped in OpenCV 4.0"

## ◆  int64

 typedef int64_t int64

## ◆  schar

 typedef signed char schar

## ◆  uchar

 typedef unsigned char uchar

## ◆  uint

 typedef uint32_t uint

## ◆  uint64

 typedef uint64_t uint64

## ◆  ushort

 typedef unsigned short ushort

## ◆  hal_ni_dct2D()

 int hal_ni_dct2D ( cvhalDFT * context , const uchar * src_data , size_t src_step , uchar * dst_data , size_t dst_step )
inline

#include < core/src/hal_replacement.hpp >

 context pointer to context storing all necessary data src_data,src_step source image data and step dst_data,dst_step destination image data and step

## ◆  hal_ni_dctFree2D()

 int hal_ni_dctFree2D ( cvhalDFT * context )
inline

#include < core/src/hal_replacement.hpp >

 context pointer to context storing all necessary data

## ◆  hal_ni_dctInit2D()

 int hal_ni_dctInit2D ( cvhalDFT ** context , int width , int height , int depth , int flags )
inline

#include < core/src/hal_replacement.hpp >

 context double pointer to context storing all necessary data width,height image dimensions depth image type (CV_32F or CV64F) flags algorithm options (combination of CV_HAL_DFT_INVERSE, ...)

## ◆  hal_ni_dft1D()

 int hal_ni_dft1D ( cvhalDFT * context , const uchar * src , uchar * dst )
inline

#include < core/src/hal_replacement.hpp >

 context pointer to context storing all necessary data src source data dst destination data

## ◆  hal_ni_dft2D()

 int hal_ni_dft2D ( cvhalDFT * context , const uchar * src_data , size_t src_step , uchar * dst_data , size_t dst_step )
inline

#include < core/src/hal_replacement.hpp >

 context pointer to context storing all necessary data src_data,src_step source image data and step dst_data,dst_step destination image data and step

## ◆  hal_ni_dftFree1D()

 int hal_ni_dftFree1D ( cvhalDFT * context )
inline

#include < core/src/hal_replacement.hpp >

 context pointer to context storing all necessary data

## ◆  hal_ni_dftFree2D()

 int hal_ni_dftFree2D ( cvhalDFT * context )
inline

#include < core/src/hal_replacement.hpp >

 context pointer to context storing all necessary data

## ◆  hal_ni_dftInit1D()

 int hal_ni_dftInit1D ( cvhalDFT ** context , int len , int count , int depth , int flags , bool * needBuffer )
inline

#include < core/src/hal_replacement.hpp >

 context double pointer to context storing all necessary data len transformed array length count estimated transformation count depth array type (CV_32F or CV_64F) flags algorithm options (combination of CV_HAL_DFT_INVERSE, CV_HAL_DFT_SCALE, ...) needBuffer pointer to boolean variable, if valid pointer provided, then variable value should be set to true to signal that additional memory buffer is needed for operations

## ◆  hal_ni_dftInit2D()

 int hal_ni_dftInit2D ( cvhalDFT ** context , int width , int height , int depth , int src_channels , int dst_channels , int flags , int nonzero_rows )
inline

#include < core/src/hal_replacement.hpp >

 context double pointer to context storing all necessary data width,height image dimensions depth image type (CV_32F or CV64F) src_channels number of channels in input image dst_channels number of channels in output image flags algorithm options (combination of CV_HAL_DFT_INVERSE, ...) nonzero_rows number of nonzero rows in image, can be used for optimization

## ◆  hal_ni_minMaxIdx()

 int hal_ni_minMaxIdx ( const uchar * src_data , size_t src_step , int width , int height , int depth , double * minVal , double * maxVal , int * minIdx , int * maxIdx , uchar * mask )
inline

#include < core/src/hal_replacement.hpp >

Finds the global minimum and maximum in an array.

 src_data,src_step Source image width,height Source image dimensions depth Depth of source image minVal,maxVal Pointer to the returned global minimum and maximum in an array. minIdx,maxIdx Pointer to the returned minimum and maximum location. mask Specified array region.