opencv宏

1.

CV_FUNCNAME 定义变量 cvFuncName存放函数名,用于出错时可以报告出错的函数

__FILE__  C语言中的宏,CV_Error中经常用到,说明出错的函数所在源文件名

__LINE__  C语言中的宏,CV_Error中经常用到, 说明出错位置的函数

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

 

对于代码中 __BEGIN__ 和__END__后面多加一个分号 的解释:

因为 __BEGIN__;等价于{; ,其中分号(;)为一个空语句,是合理的,但不要也行.__END__也一样.如

int i; ; ; int b;

这样的语法是正确的.

3.

CV_CN_MAX 64//通道数最大为64

CV_DEPTH_MAX = 8 = (1000)//位深最大为8

CV_MAT_TYPE_MASK 11111111 //511

CV_MAT_TYPE(flags)  ((flags) & CV_MAT_DEPTH_MASK)//flags与511相与还是flags,但可以保重flags在0到511之间

CV_MAT_DEPTH_MASK = 7 = (0111)//位深掩模,保证最大为8(其余数)

CV_MAT_CN_MASK = (111111, 000)//掩模

CV_MAT_CN求得通道数

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

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

CV_MAKETYPE(depth,cn) (CV_MAT_DEPTH(depth) + (((cn)-1) << CV_CN_SHIFT))//将cn-1左移3位(即乘以8)后与depth相加

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)

 

还有不少,以待更新......

转载于:https://www.cnblogs.com/wqvbjhc/archive/2010/04/17/2465152.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值