opencv 命名规则和一些宏观注意

来源:互联网 发布:凯迪网络手机版 编辑:程序博客网 时间:2024/05/22 04:55

1.         内部函数都是icv 开头的,不用。只是由外部函数调用。

2.         外部函数都是cv 开头的。

3.         混合的C/C++       接口的头文件 .h 结尾。而纯C++ 是用.hpp 结尾的。

4.         函数接口设计:函数作用,返回类型,函数名,参数顺序,参数默认值。参数解释

a)         函数作用代码 要精简短小,以便调用。

b)        命名 以cvActionObject 像一句话

c)        函数返回值 通常 创建一个对象,并返回一个对象。

d)        函数的参数类型 应该用openCV中自带的类型。而不要用简单的 指针和数值,以防opencv 中的库函数 调用不方便。

e)         参数顺序:输入参数,输出参数,可选参数。输入参数通常用const 约束

5.         函数实现:

a)         关注要素: 类型检查,错误产生和处理,内存管理和资源回收,调用低级函数

b)        参数类型: openCV中普遍用高级类型 返回和传送 参数。不用简单指针和数值,为了方便其他函数的调用。

c)        错误产生时用 cvError 函数抛出错误。CV_ERROR 等代替。

d)        内存管理和资源回收: cvAlloc and cvFree 分配回收 简单缓存 有效。但是复杂资源和大内存 用cvCreate and cvRelease <object> 来分配和回收。

e)         调用低级函数 方便又安全的 方法是 使用IPPI_CALL 宏。

6.         移植性:用sizeof(int) 而不用 4 。用预处理指令包含非可移植代码。

7.         图像分: 二值图像(黑白两值图像),灰度图像(一维变化),彩色图像(三维变化)

8.         用CV_ERROR/OPENCV_ERROR 抛出错误

9.         用CV_CALL /OPENCV_CALL    调用高级函数

10.     用IPPI_CALL                  调用低级函数

11.     用typedef 有利于移植,跨平台。Typedef int INTEGER;

12.     CvMat 的结构: type ,step ,count ,*data,height,width

13.     CvTermCriteria   迭代算法的种植准则

14.     CvArr* 不确定数组

15.     CvMat 结构头和数据分开存储的,可以分开创建。三种方法:(三个概念: 内存空间,头, 数据)

a)         cvCreateMatHeader(); cvCreateData()= cvSetData()   先分配头,再分配数据

b)        cvCreateMat(cols,rows, type) 把头和数据的空间都分配了

c)        cvMat(cols,rows,type,*data)   分配头 并把已有的数据空间 用*data相连

d)        CvMat *ptr = cvCreateMat(cols,rows,type); 分配好了头和数据的空间但没有初始化,只是用默认值。 cvInitMatHeader(ptr,cols,rows,type, *data)

 

转自http://hi.baidu.com/54newman/item/e4251f1b6e37b5ee9813d68f