opencv宏

 1.

CV_FUNCNAME 用于出错时可以报告出错的函数

__FILE__ 说明出错的函数所在源文件名

__LINE__ 说明出错位置的函数

 

cxerror.h 中

 /* CV_FUNCNAME macro defines icvFuncName constant which is used by CV_ERROR macro */
#ifdef CV_NO_FUNC_NAMES
    #define CV_FUNCNAME( Name )
    #define cvFuncName ""
#else   
    #define CV_FUNCNAME( Name )  /
    static char cvFuncName[] = Name
#endif


/*
  CV_ERROR macro unconditionally raises error with passed code and message.
  After raising error, control will be transferred to the exit label.
*/
#define CV_ERROR( Code, Msg )                                       /
{                                                                   /
     cvError( (Code), cvFuncName, Msg, __FILE__, __LINE__ );        /
     EXIT;                                                          /
}

 

2.

__BEGIN__ 和__END__配套使用,当出现error时,EXIT

 

cxerror.h 中

#define __BEGIN__       {
#define __END__         goto exit; exit: ; }
#define __CLEANUP__
#define EXIT            goto exit

 

3.

16384 = (100 0000 0000 0000)

令 X = ((((sizeof(size_t)/4+1)*16384|0x3a50) >> CV_MAT_DEPTH(type)*2) & 3)

((sizeof(size_t)/4+1)*16384|0x3a50) = (1011 1010 0101 0000) = (23, 22, 11, 00)当>> CV_MAT_DEPTH(type)*2时将两位两位向右移,即当DEPTH为CV_8U, CV_8S时, X =0;当DEPTH为CV_16U, CV_16S时, X = 1;

当DEPTH为CV_32S, CV_32F时, X = 2;当DEPTH为CV_64F时,X = 3;

CV_DEPTH_MAX = 8 = (1000)

CV_MAT_DEPTH_MASK = 7 = (0111)

CV_MAT_CN_MASK = (111111, 000)

CV_MAT_CN求得通道数

CV_MAT_DEPTH求得深度,共8中 0 ~ 7

CV_ELEM_SIZE = 通道数 x DEPTH占字节数 = 通道数 >> X = 一个像素字节数

 

 

cxtypes.h中

/* 0x3a50 = 11 10 10 01 01 00 00 ~ array of log2(sizeof(arr_type_elem)) */
#define CV_ELEM_SIZE(type) /
    (CV_MAT_CN(type) << ((((sizeof(size_t)/4+1)*16384|0x3a50) >> CV_MAT_DEPTH(type)*2) & 3))

 

#define CV_CN_MAX     64

#define CV_MAT_CN_MASK          ((CV_CN_MAX - 1) << CV_CN_SHIFT)
#define CV_MAT_CN(flags)        ((((flags) & CV_MAT_CN_MASK) >> CV_CN_SHIFT) + 1)

 

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

#define CV_MAT_DEPTH_MASK       (CV_DEPTH_MAX - 1)

#define CV_CN_SHIFT   3
#define CV_DEPTH_MAX  (1 << CV_CN_SHIFT)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值