opencv命名规则

OpenCV使用近似匈牙利命名法的方法,比较值得一提的特色是,它的资料结构几乎都是大写的Cv开头,而他的副程式都是小写的cv,举个例子: 
CvSize ImageSize1 = cvSize( 400 , 300 );//cvSize(width,height)
资料结构ImageSize1的型态是CvSize,藉由cvSize()这个副程式来初始化资料结构,400代表的是宽,300代表的是高,CvSize资料结构底下包含着width及height两个整数型别,可以用ImageSize1->width,ImageSize1->height来检视.唯一差别是,cvSize()顺便用malloc()配置了资料结构的记忆体位址. 再来提到函数(副程式)命名规则,cvActionTargetMethod(),这只是提升了程式的易读性,用什么动作,哪个目标,用什么方法,常遇到的状况有四种1.cvActionTarget() 2. cvTarget() 3.cvMethod() 4.cvActionMethod() 1.的话就如cvCreateImage(),cvNamedWindow()等,2.的话几乎很常见如cvMat(),cvSize(),cvPoint(),3.的话比较常用的是演算法,或是某方法,cvDCT()离散余弦转换演算法,4.的话就如cvFindContours()找出轮廓演算法或是一般也可以用滑鼠事件,键盘事件来表达如:DoubleClickedMouse ()(这个例子不在OpenCV命名之内),这种做法对于常写程式的人而言是相当重要的技巧,初始化资料结构就直接用名词(如同物件导向一般),副程式的行为就用动词+名词,当再建构一个程式或系统的时候可以很轻易的就用资料流程图(DFD)表达出来,这应该是要养成的良好习惯,而不是要用aa(),bb()这种奇怪的副程式名称了参数命名规则,这里指的参数是大写英文加底线的那个,如:CV_8UC1 IPL_DEPTH_8U CV_BLUR_NO_SCALE 这种代表的参数非常之多,背后代表的意义只是数字的代号,被#define所定义,就像#define CV_BLUR_NO_SCALE 0 CV_BLUR_NO_SCALE就会被0所替换,有些参数后面的数字意义很可能会被用公式重新计算,所以不需要去了解他们背后的数字代码代表什么. 一般的参数都很容易从字面上的意义去了解,比较特殊的是,矩阵跟图形的创立参数,cvCreateMat(),cvCreateImage(),矩阵参数的命名规则,是用大写CV_(位元数)+(资料型态)+ (Channel数),全部的矩阵参数如下所示:


CV_8UC1 CV_8SC1 CV_16UC1 CV_16SC1 CV_32SC1CV_32FC1 CV_64FC1 
CV_8UC2 CV_8SC2 CV_16UC2 CV_16SC2 CV_32SC2CV_32FC2 CV_64FC2 
CV_8UC3 CV_8SC3 CV_16UC3 CV_16SC3 CV_32SC3CV_32FC3 CV_64FC3 
CV_8UC4 CV_8SC4 CV_16UC4 CV_16SC4 CV_32SC4CV_32FC4 CV_64FC4


里面的位元数,分别代表8bits,16bits,32bits,64bits,资料型态,U代表Unsign Integer,无正负号整数型态,S代表Sign Integer,正负号整数型态,F代表Float,浮点数型态,Channel数的部份,C1代表单通道,C2代表两个通道,C3代表三个通道,以此类推,这里的通道表示的是色彩空间的维度,像BMP格式的RGB格式它的Channel就是3,说简单一点的话C1代表一个二维阵列,C2代表两个二维阵列,C3代表三个二维阵列,以此类推. 
再来就是介绍cvCreateImage()图形参数它们会固定用IPL_DEPTH_开头,它的命名规则为IPL_DEPTH_(位元数)+(资料型态),全部的图形创立参数如下所示:


IPL_DEPTH_1U IPL_DEPTH_32F IPL_DEPTH_8S 
IPL_DEPTH_8U IPL_DEPTH_16S 
IPL_DEPTH_16U IPL_DEPTH_32S


所有的说明皆同上的矩阵规则,位元数分别有1bit(黑白二元图),8bits,16bits,32bits,资料型态分别为U(Unsign Integer),S(Sign Integer),F(Float).


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1 一、简介 1.1 1、OpenCV的特点 1.1.1 (1) 总体描述 1.1.2 (2) 功能 1.1.3 (3) OpenCV模块 1.2 2、有用的学习资源 1.2.1 (1) 参考手册: 1.2.2 (2) 网络资源: 1.2.3 (3) 书籍: 1.2.4 (4) 视频处理例程(在 <opencv-root>/samples/c/): 1.2.5 (5) 图像处理例程 (在 <opencv-root>/samples/c/): 1.3 3、OpenCV 命名规则 1.3.1 (1) 函数名: 1.3.2 (2) 矩阵数据类型: 1.3.3 (3) 图像数据类型: 1.3.4 (4) 头文件: 1.4 4、编译建议 1.4.1 (1) Linux: 1.4.2 (2) Windows: 1.5 5、C++例程 2 二、GUI 指令 2.1 1、窗口管理 2.1.1 (1) 创建和定位一个新窗口: 2.1.2 (2) 载入图像: 2.1.3 (3) 显示图像: 2.1.4 (4) 关闭窗口: 2.1.5 (5) 改变窗口大小: 2.2 2、输入处理 2.2.1 (1) 处理鼠标事件: 2.2.2 (2) 处理键盘事件: 2.2.3 (3) 处理滑动条事件: 3 三、OpenCV的基本数据结构 3.1 1、图像数据结构 3.1.1 (1) IPL 图像: 3.2 2、矩阵与向量 3.2.1 (1) 矩阵: 3.2.2 (2) 一般矩阵: 3.2.3 (3) 标量: 3.3 3、其它结构类型 3.3.1 (1) 点: 3.3.2 (2) 矩形框大小(以像素为精度): 3.3.3 (3) 矩形框的偏置和大小: 4 四、图像处理 4.1 1、图像的内存分配与释放 4.1.1 (1) 分配内存给一幅新图像: 4.1.2 (2) 释放图像: 4.1.3 (3) 复制图像: 4.1.4 (4) 设置/获取感兴趣区域ROI: 4.1.5 (5) 设置/获取感兴趣通道COI: 4.2 2、图像读写 4.2.1 (1) 从文件中读入图像: 4.2.2 (2) 保存图像: 4.3 3、访问图像像素 4.3.1 (1) 假设你要访问第k通道、第i行、第j列的像素。 4.3.2 (2) 间接访问: (通用,但效率低,可访问任意格式的图像) 4.3.3 (3) 直接访问: (效率高,但容易出错) 4.3.4 (4) 基于指针的直接访问: (简单高效) 4.3.5 (5) 基于 c++ wrapper 的直接访问: (更简单高效) 4.4 4、图像转换 4.4.1 (1) 字节型图像的灰度-彩色转换: 4.4.2 (2) 彩色图像->灰度图像: 4.4.3 (3) 不同彩色空间之间的转换: 4.5 5、绘图指令 4.5.1 (1) 绘制矩形: 4.5.2 (2) 绘制圆形: 4.5.3 (3) 绘制线段: 4.5.4 (4) 绘制一组线段: 4.5.5 (5) 绘制一组填充颜色的多边形: 4.5.6 (6) 文本标注: 5 五、矩阵处理 5.1 1、矩阵的内存分配与释放 5.1.1 (1) 总体上: 5.1.2 (2) 为新矩阵分配内存: 5.1.3 (3) 释放矩阵内存: 5.1.4 (4) 复制矩阵: 5.1.5 (5) 初始化矩阵: 5.1.6 (6) 初始化矩阵为单位矩阵: 5.2 2、访问矩阵元素 5.2.1 (1) 假设需要访问一个2D浮点型矩阵的第(i, j)个单元. 5.2.2 (2) 间接访问: 5.2.3 (3) 直接访问(假设矩阵数据按4字节行对齐): 5.2.4 (4) 直接访问(当数据的行对齐可能存在间隙时 possible alignment gaps): 5.2.5 (5) 对于初始化后的矩阵进行直接访问: 5.3 3、矩阵/向量运算 5.3.1 (1) 矩阵之间的运算: 5.3.2 (2) 矩阵之间的元素级运算: 5.3.3 (3) 向量乘积: 5.3.4 (4) 单一矩阵的运算: 5.3.5 (5) 非齐次线性方程求解: 5.3.6 (6) 特征值与特征向量 (矩阵为方阵): 6 六、视频处理 6.1 1、从视频流中捕捉一帧画面 6.1.1 (1) OpenCV 支持从摄像头或视频文件(AVI格式)中捕捉帧画面. 6.1.2 (2) 初始化一个摄像头捕捉器: 6.1.3 (3) 初始化一个视频文件捕捉器: 6.1.4 (4) 捕捉一帧画面: 6.1.5 (5) 释放视频流捕捉器: 6.2 2、获取/设置视频流信息 6.2.1 (1) 获取视频流设备信息: 6.2.2 (2) 获取帧图信息: 6.2.3 (3) 设置从视频文件抓取的第一帧画面的位置: 6.3 3、保存视频文件 6.3.1 (1) 初始化视频编写器: 6.3.2 (2) 保持视频文件: 6.3.3 (3) 释放视频编写器:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值