图像处理基础(二)_OpenCV命名规则
2014-02-20 13:49
302 查看
OpenCV使用近似匈牙利命名法的方法,比较值得一提的特色是:它的数据结构几乎都是大写的Cv开头,而它提供的函数都是小写的cv,举个例子:
CvSize ImageSize = cvSize(400,300); //cvSize(width,height)
ImageSize的类型是CvSize,通过cvSize()函数來初始化结构体:400代表的是宽、300代表的是高;CvSize结构体包含width及height两个整型,可以用ImageSize.width,ImageSize.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)表示。这个是良好的命名习惯。
常量命名规则,OpenCV里提供了大量预定义的常量,也就是大写英文加下划线的那种,如:
CV_8UC1
IPL_DEPTH_8U
CV_BLUR_NO_SCALE
这种常量由#define在头文件中定义,如:
#define CV_BLUR_NO_SCALE 0
一般的常量都很容易从字面上的意义去了解,比较特殊的是矩阵和图形的创建参数,cvCreateMat(),cvCreateImage()。
cvCreateMat()参数的命名规则是用大写CV_(位数)+(数据类型)+(Channel数),全部的矩阵参数如下所示:
CV_8UC1 CV_8SC1 CV_16UC1 CV_16SC1 CV_32SC1 CV_32FC1 CV_64FC1
CV_8UC2 CV_8SC2 CV_16UC2 CV_16SC2 CV_32SC2 CV_32FC2 CV_64FC2
CV_8UC3 CV_8SC3 CV_16UC3 CV_16SC3 CV_32SC3 CV_32FC3 CV_64FC3
CV_8UC4 CV_8SC4 CV_16UC4 CV_16SC4 CV_32SC4 CV_32FC4 CV_64FC4
里面的位数,分别代表8bits、16bits、32bits、64bits;数据类型,U代表Unsigned Integer,无符号整数类型;S代表Signed 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(Unsigned Integer),S(Signed Integer),F(Float)。
转载:/article/9489776.html
CvSize ImageSize = cvSize(400,300); //cvSize(width,height)
ImageSize的类型是CvSize,通过cvSize()函数來初始化结构体:400代表的是宽、300代表的是高;CvSize结构体包含width及height两个整型,可以用ImageSize.width,ImageSize.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)表示。这个是良好的命名习惯。
常量命名规则,OpenCV里提供了大量预定义的常量,也就是大写英文加下划线的那种,如:
CV_8UC1
IPL_DEPTH_8U
CV_BLUR_NO_SCALE
这种常量由#define在头文件中定义,如:
#define CV_BLUR_NO_SCALE 0
一般的常量都很容易从字面上的意义去了解,比较特殊的是矩阵和图形的创建参数,cvCreateMat(),cvCreateImage()。
cvCreateMat()参数的命名规则是用大写CV_(位数)+(数据类型)+(Channel数),全部的矩阵参数如下所示:
CV_8UC1 CV_8SC1 CV_16UC1 CV_16SC1 CV_32SC1 CV_32FC1 CV_64FC1
CV_8UC2 CV_8SC2 CV_16UC2 CV_16SC2 CV_32SC2 CV_32FC2 CV_64FC2
CV_8UC3 CV_8SC3 CV_16UC3 CV_16SC3 CV_32SC3 CV_32FC3 CV_64FC3
CV_8UC4 CV_8SC4 CV_16UC4 CV_16SC4 CV_32SC4 CV_32FC4 CV_64FC4
里面的位数,分别代表8bits、16bits、32bits、64bits;数据类型,U代表Unsigned Integer,无符号整数类型;S代表Signed 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(Unsigned Integer),S(Signed Integer),F(Float)。
转载:/article/9489776.html
相关文章推荐
- openCV笔记:图像处理基础
- opencv-python人眼识别图像处理基础
- 【AI基础】python:openCV——图像处理(2)
- OPENCV图像处理基础(六)序列化储存图像
- 图像处理算法基础(五)---拉普拉斯变换自实现与opencv对比
- 图像处理算法基础(六)---sobel算子自实现与opencv对比
- OpenCV图像处理基础(一)
- OPENCV图像处理基础(二)感兴趣区域ROI
- OpenCV探索之路(二):图像处理的基础知识点串烧
- OPENCV图像处理基础(五)鼠标事件画个框
- OpenCV作图像处理和识别方面的编程时常用的基础语句积累!
- 图像处理之基础---基于opencv的灰度图像微分
- 转:openCV基础图像处理
- OpenCV - 图像处理基础
- OPENCV图像处理基础(一)读取一张图片
- python-opencv图像处理基础练习1
- OpenCV&图像处理_3:以腐蚀[eroding]和膨胀[dilating]为基础的形态学操作和图像金字塔[image pyramids]
- python-opencv图像处理基础练习2
- OpenCV基础02(GUI+图像处理)
- 图像处理基础(2):自适应中值滤波器(基于OpenCV实现)