【转载】opencv中的一些宏

转载 2011年01月10日 11:01:00

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) 

 

相关文章推荐

MAC平台下Xcode配置使用OpenCV的具体方法(转载)

本文转载自http://www.mamicode.com/info-detail-1193075.html 1.序言: 1.1 背景       本人小白一枚,不过因为最近在从事机器视觉方...

OpenCV矩阵函数操作大全(转载自fengbingchun)

转自:http://blog.csdn.net/freeboy1015/article/details/7256110 OpenCv矩阵操作         有很多函数有mask,代表掩码...

[转载]OPENCV矩阵操作

OpenCV 矩阵(图像)操作函数   有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等 大多数函数支持...

vs2008安装配置opencv【转载】

来源:http://blog.csdn.net/zhangyouzhuo/archive/2010/12/04/6054106.aspxhttp://ailiuzhumei.blog.163.com/...

QT+OPENCV视频采集 (原创,转载请标记!)

今天终于有了自己的博客了!由于我的时间有限,又初来咋到,只好小试牛刀,写个简单的!             Qt学习网站:http://www.yafeilinux.com/opencv中文论坛:ht...

opencv源码分析:icvCreateCARTStageClassifier之二(转载)

本文转自:http://blog.sina.com.cn/s/blog_5f853eb10100sdgn.html,在我博文中有另一篇文章,对icvCreateCARTStageClassifier介...

转载【OpenCV入门指南】第十三篇 人脸检测

【OpenCV入门指南】第十三篇 人脸检测  此为转载,原文链接:http://blog.csdn.net/morewindows/article/details/8426318     本篇介绍...

opencv 训练【转载,关于Haar特征训练源代码参数的分析】

一、简介 目标检测方法最初由Paul Viola [Viola01]提出,并由Rainer Lienhart [Lienhart02]对这一方法进行了改善。该方法的基本步骤为:首先,利用样本(大约几...

利用OpenCV计算并绘制灰度直方图 (转载)

原帖地址:http://blog.csdn.net/quarryman/article/details/6432963  下面用两种方法实现直方图的计算和绘制,其一用自己实现计算直方图,其二利用Op...
  • woxincd
  • woxincd
  • 2012年03月14日 16:26
  • 1024

opencv 卡尔曼滤波器例子,自己修改过【转载】

【转载】http://hi.baidu.com/lin65505578/blog/item/7c03a0d4210b68c7a144dfe6.html   一、卡尔曼滤波器的理论解释      ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【转载】opencv中的一些宏
举报原因:
原因补充:

(最多只允许输入30个字)