opencv源码阅读(1)

参考资料

  1. http://www.opencv.org.cn/
  2. opencv document

使用的opencv版本:OpenCV 1.0

第一个阅读的文件

cxcore/include/cxtypes.h

CvArr

typedef void CvArr;
//函数传参经常是CvArr*,具体的类型在运行期识别

Cv32suf

typedef union Cv32suf 
{
int i;
unsigned u;
float f;
}
Cv32suf;
这个union既可以看作是int,也可以看作是unsigned(unsigned int),float 这三种数据类型在x86平台都是4个字节。

类似的还有Cv64suf,该union也有三个并列的变量,都是64位

常用宏和内联函数


  • CV_PI:pi值
  • CV_LOG2:ln2
  • CV_SWAP(a,b,t)

    交换a和b的值,t是临时变量

  • MIN,MAX:求两个数的最小最大值
  • CV_IMIN(a, b): 这个求最小值的宏号称没有分支跳转(即如MIN宏那样使用了if语句或?符号比较了两个数),具体代码如下:
    ((a) ^ (((a)^(b)) & (((a) < (b)) - 1)))
    其中^是与或运算:两者相等为0,不等为1。上面的宏为什么会奏效呢,请看博文不使用跳转的宏CV_IMIN分析
  • CV_IMAX与CV_IMIN类似
  • CV_IABS(a):整数的绝对值
  • CV_CMP(a,b): 比较a和b,如果a>b返回1,a<b返回-1,a=b返回0
  • CV_SIGN(a):若a为正,返回1,为负数返回-1,是0返回0,调用了CV_CMP(a,0)

内联函数

  •  int  cvRound( double value )
    返回离value最近的整数,所谓的四舍五入
  • s

posted on 2011-05-06 23:42  speedmancs  阅读(962)  评论(0编辑  收藏  举报

导航