1 #ifndef OPENCV_CORE_HAL_INTERFACE_H 2 #define OPENCV_CORE_HAL_INTERFACE_H 3 4 //! @addtogroup core_hal_interface 5 //! @{ 6 7 //! @name Return codes 8 //! @{ 9 #define CV_HAL_ERROR_OK 0 10 #define CV_HAL_ERROR_NOT_IMPLEMENTED 1 11 #define CV_HAL_ERROR_UNKNOWN -1 12 //! @} 13 14 #ifdef __cplusplus 15 #include <cstddef> 16 #else 17 #include <stddef.h> 18 #include <stdbool.h> 19 #endif 20 21 //! @name Data types 22 //! primitive types 23 //! - schar - signed 1 byte integer 24 //! - uchar - unsigned 1 byte integer 25 //! - short - signed 2 byte integer 26 //! - ushort - unsigned 2 byte integer 27 //! - int - signed 4 byte integer 28 //! - uint - unsigned 4 byte integer 29 //! - int64 - signed 8 byte integer 30 //! - uint64 - unsigned 8 byte integer 31 //! @{ 32 #if !defined _MSC_VER && !defined __BORLANDC__ 33 # if defined __cplusplus && __cplusplus >= 201103L && !defined __APPLE__ 34 # include <cstdint> 35 # ifdef __NEWLIB__ 36 typedef unsigned int uint; 37 # else 38 typedef std::uint32_t uint; 39 # endif 40 # else 41 # include <stdint.h> 42 typedef uint32_t uint; 43 # endif 44 #else 45 typedef unsigned uint; 46 #endif 47 48 typedef signed char schar; 49 50 #ifndef __IPL_H__ 51 typedef unsigned char uchar; 52 typedef unsigned short ushort; 53 #endif 54 55 #if defined _MSC_VER || defined __BORLANDC__ 56 typedef __int64 int64; 57 typedef unsigned __int64 uint64; 58 # define CV_BIG_INT(n) n##I64 59 # define CV_BIG_UINT(n) n##UI64 60 #else 61 typedef int64_t int64; 62 typedef uint64_t uint64; 63 # define CV_BIG_INT(n) n##LL 64 # define CV_BIG_UINT(n) n##ULL 65 #endif 66 67 #define CV_USRTYPE1 (void)"CV_USRTYPE1 support has been dropped in OpenCV 4.0" 68 69 #define CV_CN_MAX 512 70 #define CV_CN_SHIFT 3 71 #define CV_DEPTH_MAX (1 << CV_CN_SHIFT) 72 73 #define CV_8U 0 74 #define CV_8S 1 75 #define CV_16U 2 76 #define CV_16S 3 77 #define CV_32S 4 78 #define CV_32F 5 79 #define CV_64F 6 80 #define CV_16F 7 81 82 #define CV_MAT_DEPTH_MASK (CV_DEPTH_MAX - 1) 83 #define CV_MAT_DEPTH(flags) ((flags) & CV_MAT_DEPTH_MASK) 84 85 #define CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT)) 86 #define CV_MAKE_TYPE CV_MAKETYPE 87 88 #define CV_8UC1 CV_MAKETYPE(CV_8U,1) 89 #define CV_8UC2 CV_MAKETYPE(CV_8U,2) 90 #define CV_8UC3 CV_MAKETYPE(CV_8U,3) 91 #define CV_8UC4 CV_MAKETYPE(CV_8U,4) 92 #define CV_8UC(n) CV_MAKETYPE(CV_8U,(n)) 93 94 #define CV_8SC1 CV_MAKETYPE(CV_8S,1) 95 #define CV_8SC2 CV_MAKETYPE(CV_8S,2) 96 #define CV_8SC3 CV_MAKETYPE(CV_8S,3) 97 #define CV_8SC4 CV_MAKETYPE(CV_8S,4) 98 #define CV_8SC(n) CV_MAKETYPE(CV_8S,(n)) 99 100 #define CV_16UC1 CV_MAKETYPE(CV_16U,1) 101 #define CV_16UC2 CV_MAKETYPE(CV_16U,2) 102 #define CV_16UC3 CV_MAKETYPE(CV_16U,3) 103 #define CV_16UC4 CV_MAKETYPE(CV_16U,4) 104 #define CV_16UC(n) CV_MAKETYPE(CV_16U,(n)) 105 106 #define CV_16SC1 CV_MAKETYPE(CV_16S,1) 107 #define CV_16SC2 CV_MAKETYPE(CV_16S,2) 108 #define CV_16SC3 CV_MAKETYPE(CV_16S,3) 109 #define CV_16SC4 CV_MAKETYPE(CV_16S,4) 110 #define CV_16SC(n) CV_MAKETYPE(CV_16S,(n)) 111 112 #define CV_32SC1 CV_MAKETYPE(CV_32S,1) 113 #define CV_32SC2 CV_MAKETYPE(CV_32S,2) 114 #define CV_32SC3 CV_MAKETYPE(CV_32S,3) 115 #define CV_32SC4 CV_MAKETYPE(CV_32S,4) 116 #define CV_32SC(n) CV_MAKETYPE(CV_32S,(n)) 117 118 #define CV_32FC1 CV_MAKETYPE(CV_32F,1) 119 #define CV_32FC2 CV_MAKETYPE(CV_32F,2) 120 #define CV_32FC3 CV_MAKETYPE(CV_32F,3) 121 #define CV_32FC4 CV_MAKETYPE(CV_32F,4) 122 #define CV_32FC(n) CV_MAKETYPE(CV_32F,(n)) 123 124 #define CV_64FC1 CV_MAKETYPE(CV_64F,1) 125 #define CV_64FC2 CV_MAKETYPE(CV_64F,2) 126 #define CV_64FC3 CV_MAKETYPE(CV_64F,3) 127 #define CV_64FC4 CV_MAKETYPE(CV_64F,4) 128 #define CV_64FC(n) CV_MAKETYPE(CV_64F,(n)) 129 130 #define CV_16FC1 CV_MAKETYPE(CV_16F,1) 131 #define CV_16FC2 CV_MAKETYPE(CV_16F,2) 132 #define CV_16FC3 CV_MAKETYPE(CV_16F,3) 133 #define CV_16FC4 CV_MAKETYPE(CV_16F,4) 134 #define CV_16FC(n) CV_MAKETYPE(CV_16F,(n)) 135 //! @} 136 137 //! @name Comparison operation 138 //! @sa cv::CmpTypes 139 //! @{ 140 #define CV_HAL_CMP_EQ 0 141 #define CV_HAL_CMP_GT 1 142 #define CV_HAL_CMP_GE 2 143 #define CV_HAL_CMP_LT 3 144 #define CV_HAL_CMP_LE 4 145 #define CV_HAL_CMP_NE 5 146 //! @} 147 148 //! @name Border processing modes 149 //! @sa cv::BorderTypes 150 //! @{ 151 #define CV_HAL_BORDER_CONSTANT 0 152 #define CV_HAL_BORDER_REPLICATE 1 153 #define CV_HAL_BORDER_REFLECT 2 154 #define CV_HAL_BORDER_WRAP 3 155 #define CV_HAL_BORDER_REFLECT_101 4 156 #define CV_HAL_BORDER_TRANSPARENT 5 157 #define CV_HAL_BORDER_ISOLATED 16 158 //! @} 159 160 //! @name DFT flags 161 //! @{ 162 #define CV_HAL_DFT_INVERSE 1 163 #define CV_HAL_DFT_SCALE 2 164 #define CV_HAL_DFT_ROWS 4 165 #define CV_HAL_DFT_COMPLEX_OUTPUT 16 166 #define CV_HAL_DFT_REAL_OUTPUT 32 167 #define CV_HAL_DFT_TWO_STAGE 64 168 #define CV_HAL_DFT_STAGE_COLS 128 169 #define CV_HAL_DFT_IS_CONTINUOUS 512 170 #define CV_HAL_DFT_IS_INPLACE 1024 171 //! @} 172 173 //! @name SVD flags 174 //! @{ 175 #define CV_HAL_SVD_NO_UV 1 176 #define CV_HAL_SVD_SHORT_UV 2 177 #define CV_HAL_SVD_MODIFY_A 4 178 #define CV_HAL_SVD_FULL_UV 8 179 //! @} 180 181 //! @name Gemm flags 182 //! @{ 183 #define CV_HAL_GEMM_1_T 1 184 #define CV_HAL_GEMM_2_T 2 185 #define CV_HAL_GEMM_3_T 4 186 //! @} 187 188 //! @} 189 190 #endif 191