opencv源码阅读(1)
参考资料
- http://www.opencv.org.cn/
- 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 阅读(961) 评论(0) 编辑 收藏 举报