opencv编程简介笔记3三、OpenCV的基本数据结构opencv编程简介笔记3三、OpenCV的基本数据结构
三、OpenCV的基本数据结构
(译注:OpenCV 1.1、1.2或2.0版本中各数据结构的结构体元素有所调整,以下仅作参考) 1、图像数据结构
(1) IPL 图像:
IplImage
|-- int nChannels; // 颜色通道数目 (1,2,3,4)
|-- int depth; // 像素的位深:
| // IPL_DEPTH_8U, IPL_DEPTH_8S,
| // IPL_DEPTH_16U,IPL_DEPTH_16...
opencv编程简介笔记3三、OpenCV的基本数据结构
三、OpenCV的基本数据结构
(译注:OpenCV 1.1、1.2或2.0版本中各数据结构的结构体元素有所调整,以下仅作参考) 1、图像数据结构
(1) IPL 图像:
IplImage
|-- int nChannels; // 颜色通道数目 (1,2,3,4)
|-- int depth; // 像素的位深:
| // IPL_DEPTH_8U, IPL_DEPTH_8S,
| // IPL_DEPTH_16U,IPL_DEPTH_16S,
| // IPL_DEPTH_32S,IPL_DEPTH_32F,
| // IPL_DEPTH_64F
|-- int width; // 图像宽度(像素为单位)
|-- int height; // 图像高度
|-- char* imageData; // 图像数据指针
| // 注意彩色图像按BGR顺序存储数据
|-- int dataOrder; // 0 - 将像素点不同通道的值交错排在一起,形成单一像素平面
| // 1 - 把所有像素同通道值排在一起,形成若干个通道平面,再把平面排列起来
| // cvCreateImage 只能创建像素交错排列式的图像
|-- int origin; // 0 – 像素原点为左上角,
| // 1 – 像素原点为左下角 (Windows bitmaps style)
|-- int widthStep; // 相邻行的同列点之间的字节数
|-- int imageSize; // 图像的大小(字节为单位) = height*widthStep
|-- struct _IplROI *roi;// 图像的感兴趣区域(ROI). ROI非空时对图像的
| // 处理仅限于ROI区域.
|-- char *imageDataOrigin; // 图像数据未对齐时的数据原点指针
| // (需要正确地重新分配图像内存 )
| // (needed for correct image deallocation)
|-- int align; // 图像数据的行对齐: 4 or 8 byte alignment
| // OpenCV 中无此项,采用widthStep代替
|-- char colorModel[4]; // 颜色模型 – OpenCV中忽略此项
2、矩阵与向量
(1) 矩阵:
CvMat // 2D 矩阵
|-- int type; // 元素类型 (uchar,short,int,float,double) 与标志
|-- int step; // 整行长度字节数
|-- int rows, cols; // 行、列数
|-- int height, width; // 矩阵高度、宽度,与rows、cols对应
|-- union data;
|-- uchar* ptr; // data pointer for an unsigned char matrix
|-- short* s; // data pointer for a short matrix
|-- int* i; // data pointer for an integer matrix
|-- float* fl; // data pointer for a float matrix
|-- double* db; // data pointer for a double matrix
CvMatND // N-维矩阵
|-- int type; // 元素类型 (uchar,short,int,float,double) 与标志
|-- int dims; // 矩阵维数
|-- union data;
| |-- uchar* ptr; // data pointer for an unsigned char matrix
| |-- short* s; // data pointer for a short matrix
| |-- int* i; // data pointer for an integer matrix
| |-- float* fl; // data pointer for a float matrix
| |-- double* db; // data pointer for a double matrix
|
|-- struct dim[]; // 各维信息
|-- size; // 元素数目
|-- step; // 元素间距(字节为单位)
CvSparseMat // N-维稀疏矩阵
(2) 一般矩阵:
CvArr* // 仅作为函数定义的参数使用,
// 表明函数可以接受不同类型的矩阵作为参数,
// 例如:IplImage*, CvMat* 甚至是 CvSeq*.
// 矩阵的类型通过矩阵头的前4个字节信息来确定
(3) 标量:
CvScalar
|-- double val[4]; //4D 向量
初始化函数:
CvScalar s = cvScalar(double val0, double val1=0, double val2=0, double val3=0);
// Example:
CvScalar s = cvScalar(20.0);
s.val[0]=20.0;
注意该初始化函数的函数名与对应的结构体名称几乎同名,差别仅在于函数名第一个字母是
小写的,而结构体名第一个字母是大写的。它并不是一个 C++ 构造函数。(译注:类似的还
有 cvMat 与 CvMat、cvPoint 与 CvPoint 等等)
[编辑]
3、其它结构类型
(1) 点:
CvPoint p = cvPoint(int x, int y);
CvPoint2D32f p = cvPoint2D32f(float x, float y); CvPoint3D32f p = cvPoint3D32f(float x, float y, float z); //E.g.:
p.x=5.0;
p.y=5.0;
(2) 矩形框大小(以像素为精度):
CvSize r = cvSize(int width, int height); CvSize2D32f r = cvSize2D32f(float width, float height);
(3) 矩形框的偏置和大小:
CvRect r = cvRect(int x, int y, int width, int height);
本文档为【opencv编程简介笔记3三、OpenCV的基本数据结构】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。