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

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值