⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cxmisc.h

📁 将OpenCV移植到DSP上
💻 H
📖 第 1 页 / 共 4 页
字号:
                T* right1;                                                          \                T* pivot;                                                           \                T* a;                                                               \                T* b;                                                               \                T* c;                                                               \                int swap_cnt = 0;                                                   \                                                                                    \                left0 = left;                                                       \                right0 = right;                                                     \                pivot = left + (n/2);                                               \                                                                                    \                if( n > 40 )                                                        \                {                                                                   \                    int d = n / 8;                                                  \                    a = left, b = left + d, c = left + 2*d;                         \                    left = LT(*a, *b) ? (LT(*b, *c) ? b : (LT(*a, *c) ? c : a))     \                                      : (LT(*c, *b) ? b : (LT(*a, *c) ? a : c));    \                                                                                    \                    a = pivot - d, b = pivot, c = pivot + d;                        \                    pivot = LT(*a, *b) ? (LT(*b, *c) ? b : (LT(*a, *c) ? c : a))    \                                      : (LT(*c, *b) ? b : (LT(*a, *c) ? a : c));    \                                                                                    \                    a = right - 2*d, b = right - d, c = right;                      \                    right = LT(*a, *b) ? (LT(*b, *c) ? b : (LT(*a, *c) ? c : a))    \                                      : (LT(*c, *b) ? b : (LT(*a, *c) ? a : c));    \                }                                                                   \                                                                                    \                a = left, b = pivot, c = right;                                     \                pivot = LT(*a, *b) ? (LT(*b, *c) ? b : (LT(*a, *c) ? c : a))        \                                   : (LT(*c, *b) ? b : (LT(*a, *c) ? a : c));       \                if( pivot != left0 )                                                \                {                                                                   \                    CV_SWAP( *pivot, *left0, t );                                   \                    pivot = left0;                                                  \                }                                                                   \                left = left1 = left0 + 1;                                           \                right = right1 = right0;                                            \                                                                                    \                for(;;)                                                             \                {                                                                   \                    while( left <= right && !LT(*pivot, *left) )                    \                    {                                                               \                        if( !LT(*left, *pivot) )                                    \                        {                                                           \                            if( left > left1 )                                      \                                CV_SWAP( *left1, *left, t );                        \                            swap_cnt = 1;                                           \                            left1++;                                                \                        }                                                           \                        left++;                                                     \                    }                                                               \                                                                                    \                    while( left <= right && !LT(*right, *pivot) )                   \                    {                                                               \                        if( !LT(*pivot, *right) )                                   \                        {                                                           \                            if( right < right1 )                                    \                                CV_SWAP( *right1, *right, t );                      \                            swap_cnt = 1;                                           \                            right1--;                                               \                        }                                                           \                        right--;                                                    \                    }                                                               \                                                                                    \                    if( left > right )                                              \                        break;                                                      \                    CV_SWAP( *left, *right, t );                                    \                    swap_cnt = 1;                                                   \                    left++;                                                         \                    right--;                                                        \                }                                                                   \                                                                                    \                if( swap_cnt == 0 )                                                 \                {                                                                   \                    left = left0, right = right0;                                   \                    goto insert_sort;                                               \                }                                                                   \                                                                                    \                n = MIN( (int)(left1 - left0), (int)(left - left1) );               \                for( i = 0; i < n; i++ )                                            \                    CV_SWAP( left0[i], left[i-n], t );                              \                                                                                    \                n = MIN( (int)(right0 - right1), (int)(right1 - right) );           \                for( i = 0; i < n; i++ )                                            \                    CV_SWAP( left[i], right0[i-n+1], t );                           \                n = (int)(left - left1);                                            \                m = (int)(right1 - right);                                          \                if( n > 1 )                                                         \                {                                                                   \                    if( m > 1 )                                                     \                    {                                                               \                        if( n > m )                                                 \                        {                                                           \                            stack[++sp].lb = left0;                                 \                            stack[sp].ub = left0 + n - 1;                           \                            left = right0 - m + 1, right = right0;                  \                        }                                                           \                        else                                                        \                        {                                                           \                            stack[++sp].lb = right0 - m + 1;                        \                            stack[sp].ub = right0;                                  \                            left = left0, right = left0 + n - 1;                    \                        }                                                           \                    }                                                               \                    else                                                            \                        left = left0, right = left0 + n - 1;                        \                }                                                                   \                else if( m > 1 )                                                    \                    left = right0 - m + 1, right = right0;                          \                else                                                                \                    break;                                                          \            }                                                                       \        }                                                                           \    }                                                                               \}#define CV_IMPLEMENT_QSORT( func_name, T, cmp )  \    CV_IMPLEMENT_QSORT_EX( func_name, T, cmp, int )/****************************************************************************************\*                     Structures and macros for integration with IPP                     *\****************************************************************************************//* IPP-compatible return codes */typedef enum CvStatus{             CV_BADMEMBLOCK_ERR          = -113,    CV_INPLACE_NOT_SUPPORTED_ERR= -112,    CV_UNMATCHED_ROI_ERR        = -111,    CV_NOTFOUND_ERR             = -110,    CV_BADCONVERGENCE_ERR       = -109,    CV_BADDEPTH_ERR             = -107,    CV_BADROI_ERR               = -106,    CV_BADHEADER_ERR            = -105,    CV_UNMATCHED_FORMATS_ERR    = -104,    CV_UNSUPPORTED_COI_ERR      = -103,    CV_UNSUPPORTED_CHANNELS_ERR = -102,    CV_UNSUPPORTED_DEPTH_ERR    = -101,    CV_UNSUPPORTED_FORMAT_ERR   = -100,    CV_BADARG_ERR      = -49,  //ipp comp    CV_NOTDEFINED_ERR  = -48,  //ipp comp    CV_BADCHANNELS_ERR = -47,  //ipp comp    CV_BADRANGE_ERR    = -44,  //ipp comp    CV_BADSTEP_ERR     = -29,  //ipp comp    CV_BADFLAG_ERR     =  -12,    CV_DIV_BY_ZERO_ERR =  -11, //ipp comp    CV_BADCOEF_ERR     =  -10,    CV_BADFACTOR_ERR   =  -7,    CV_BADPOINT_ERR    =  -6,    CV_BADSCALE_ERR    =  -4,    CV_OUTOFMEM_ERR    =  -3,    CV_NULLPTR_ERR     =  -2,    CV_BADSIZE_ERR     =  -1,    CV_NO_ERR          =   0,    CV_OK              =   CV_NO_ERR}CvStatus;#define CV_ERROR_FROM_STATUS( result )                \    CV_ERROR( cvErrorFromIppStatus( result ), "OpenCV function failed" )#define IPPI_CALL( Func )                                              \{                                                                      \      CvStatus  ippi_call_result;                                      \      ippi_call_result = Func;                                         \                                                                       \      if( ippi_call_result < 0 )                                       \            CV_ERROR_FROM_STATUS( (ippi_call_result));                 \}#define CV_PLUGIN_NONE      0#define CV_PLUGIN_OPTCV     1 /* custom "emerged" ippopencv library */#define CV_PLUGIN_IPPCV     2 /* IPP: computer vision */#define CV_PLUGIN_IPPI      3 /* IPP: image processing */#define CV_PLUGIN_IPPS      4 /* IPP: signal processing */#define CV_PLUGIN_IPPVM     5 /* IPP: vector math functions */#define CV_PLUGIN_IPPCC     6 /* IPP: color space conversion */#define CV_PLUGIN_MKL       8 /* Intel Math Kernel Library */#define CV_PLUGIN_MAX      16#define CV_PLUGINS1(lib1) ((lib1)&15)#define CV_PLUGINS2(lib1,lib2) (((lib1)&15)|(((lib2)&15)<<4))#define CV_PLUGINS3(lib1,lib2,lib3) (((lib1)&15)|(((lib2)&15)<<4)|(((lib2)&15)<<8))#define CV_NOTHROW throw()#ifndef IPCVAPI#define IPCVAPI(type,declspec,name,args)                        \    /* function pointer */                                      \    typedef type (declspec* name##_t) args;                     \    extern name##_t name##_p;                                   \    type declspec name args;#endif#define IPCVAPI_EX(type,name,ipp_name,ipp_search_modules,args)  \    IPCVAPI(type,CV_STDCALL,name,args) #define IPCVAPI_C_EX(type,name,ipp_name,ipp_search_modules,args)\    IPCVAPI(type,CV_CDECL,name,args) #ifndef IPCVAPI_IMPL#define IPCVAPI_IMPL(type,name,args,arg_names)                  \    static type CV_STDCALL name##_f args;                       \    name##_t name##_p = name##_f;                               \    type CV_STDCALL name args { return name##_p arg_names; }    \    static type CV_STDCALL name##_f args#endif/* IPP types' enumeration */typedef enum CvDataType {    cv1u,    cv8u, cv8s,    cv16u, cv16s, cv16sc,    cv32u, cv32s, cv32sc,    cv32f, cv32fc,    cv64u, cv64s, cv64sc,    cv64f, cv64fc} CvDataType;typedef enum CvHintAlgorithm {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -