【转载】opencv中的一些宏
来源:互联网 发布:everying软件搜图片 编辑:程序博客网 时间:2024/06/04 19:43
opencv中的一些宏
原文地址:http://blog.csdn.net/wqvbjhc/archive/2010/04/17/5496632.aspx
CV_FUNCNAME 定义变量 cvFuncName存放函数名,用于出错时可以报告出错的函数
__FILE__ C语言中的宏,CV_Error中经常用到,说明出错的函数所在源文件名
__LINE__ C语言中的宏,CV_Error中经常用到, 说明出错位置的函数
cxerror.h 中
view plaincopy to clipboardprint?
/* 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; /
}
/* 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__也一样.如
view plaincopy to clipboardprint?
int i;
;
;
int b;
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中
view plaincopy to clipboardprint?
/* 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)
- 【转载】opencv中的一些宏
- opencv中的一些笔记
- OpenCV中的一些名词解释
- opencv中的一些陷阱
- openCV中的一些函数
- opencv中的一些陷阱
- 理解OpenCV中的宏定义 CVAPI(函数返回类型)(转载)
- OpenCV开发中的一些笔记
- opencv中的画图函数转载学习
- OpenCV的一些宏
- opencv中的一些必须知道的问题
- opencv中的一些结构(Cvsize,)
- HSV 空间在OPENCV 中的一些疑惑
- opencv使用过程中的一些感受
- 关于opencv学习中的一些杂记
- OpenCV中的一些问题及其解决方案
- 转载:VC中的一些常用方法
- reportviewer使用中的一些问题(转载)
- 用SQLDMO在ASP.NET中备份和还原数据库(SQLSERVER2000)
- (原创)技术全面才算牛人,还是术业有专攻
- 强力重置ASP.NET membership加密后的密码!
- FileSystemWatcher事件多次触发的解决方法
- oracle DECODE函数
- 【转载】opencv中的一些宏
- 解读shell之批量添加账户
- [ACE程序员教程笔记]使用ACE_Connector连接服务器
- Apache开源软件目录
- 银行业务调度系统心得
- mysql data too long for column xxx解决方案
- GStreamer: Open Source Multimedia Framework
- 永久勘误:微软等面试100题答案V0.2版[第1-20题答案]
- 【转】毕业后的五年决定你的一生