教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 幼儿教育 >

OpenCV 数据结构和图像处理

来源:网络收集 时间:2026-05-05
导读: OpenCV 数据类型和图像处理周杉 OpenCV基本数据类型和数据结构【基本数据类型】 点: CvPoint 、CvPoint2D32f、CvPoint3D32f 矩形框大小: CvSize 、CvSize2D32f 矩形框: CvRect 可以存放1-4个数值的数组: CvScalar 矩阵: CvMat 、CvMatND 、CvSparseMat

OpenCV 数据类型和图像处理周杉

OpenCV基本数据类型和数据结构【基本数据类型】

点: CvPoint 、CvPoint2D32f、CvPoint3D32f 矩形框大小: CvSize 、CvSize2D32f 矩形框: CvRect 可以存放1-4个数值的数组: CvScalar 矩阵: CvMat 、CvMatND 、CvSparseMat IPL图像头部: IplImage 定义不确定的数组: CvArr (仅作函数参数)多维稀疏矩阵

OpenCV基本数据类型和数据结构【点数据结构】 CvPoint 二维坐标系下的点,类型为整型

typedef struct CvPoint { int x; /* X坐标, 通常以0为基点 */ int y; /* y坐标, 通常以0为基点 */ }CvPoint;inline CvPoint cvPoint( int x, int y ); /* 构造函数 */ inline CvPoint cvPointFrom32f( CvPoint2D32f point ) /* 从 CvPoint2D32f类型转换得来 */ CvPoint2D32f :二维坐标下的点,类型为浮点 CvPoint3D32f :三维坐标下的点,类型为浮点

OpenCV基本数据类型和数据结构【矩形数据结构】 CvSize 矩形框大小,以像素为精度 typedef struct CvSize{ int width; /* 矩形宽 */ int height; /* 矩形高 */ }CvSize;inline CvSize cvSize( int width, int height );

/* 构造函数*/ CvSize2D32f

OpenCV基本数据类型和数据结构【矩形数据结构】 CvRect 矩形框的偏移和大小 typedef struct CvRect{ int x; /* 方形的最左角的x-坐标 */ int y; /* 方形的最上或者最下角的y-坐标 */ int width; /* 宽 */ int height; /* 高 */ }CvRect;inline CvRect cvRect(int x, int y, int width, int height);

/* 构造函数*/

OpenCV基本数据类型和数据结构【矩阵数据结构】

typedef struct CvMat { int type; /* CvMat 标识 (CV_MAT_MAGIC_VAL), 元素类 型和标记 */ int step;/* 以字节为单位的行数据长度*/ int* refcount; /* 内部使用,数据引用计数 */ union { uchar* ptr;short* s; int* i; float* fl; double* db; } data; /* data 指针 */ union { int rows; int height; }; union { int cols; int width; }; } CvMat;

int type; 矩阵通用矩阵数据类型: CV_<bit_depth>(S|U|F)C<number_of_channels> S:带符号整数 U:无符号整数 F:浮点数 例:CV_8UC1:8位无符号单通道矩阵; CV_32FC2:32位浮点数双通道矩阵。

int* refcount; /*数据引用计数*/ refcount==NULL: 矩阵的数据区为外部数据,不需释放 refcount!=NULL: 需要释放矩阵头和数据区。 int step; 以字节为单位的行数据长度,是定位元素 所需要的行信息。

union{uchar *ptr;short *s;int *i;float *fl;double *db;}data;指向数据区首地址的指针。指针是公用体结构,使 用时要根据矩阵的数据类型选择。 矩 阵由宽度(width),高度(height),类型 (type),行数据长度(step,行的长度用字节表示而不

是用整形或者浮点型长度)和一个指向数据的指针构成。

矩阵的创建 CvMat* cvCreateMat(int rows,int cols,int type) 该方法最简单, 既设置

了矩阵的头部,又为数据部分分配了内存空间,该函数是

cvCreateMatHeader()和cvCreateData()的合并缩写。 cvCreateMatHeader() 只创建CvMat头部,但不为数据部分分配空间。 cvCreateData() 则是为矩阵的数据部分分配了内存空间。有时候, 我们只需要cvCreateMatHeader()就可以了,因为基于一些原因,我 们可能已经为数据部分分配了空间,或者此时分配空间还不是时候。 cvCloneMat(CvMat*) 是从一个已经有的矩阵,来“克隆”出一个新 的矩阵来。当我们不再需要某矩阵时,我们需要调用长 cvReleaseMat(CvMat*)来释放它。

IplImage:IPL 图像头typedef struct _IplImage { int nSize; /* IplImage大小 */ int ID; /* 版本 (=0)*/ int nChannels; /* 大多数OpenCV函数支持1,2,3 或4 个通道 */ int alphaChannel; /* 被OpenCV忽略 */ int depth; /* 像素的位深度:IPL_DEPTH_8U;IPL_DEPTH_8S; IPL_DEPTH_16U;IPL_DEPTH_16S;IPL_DEPTH_32S;IPL_DEPTH_32F and IPL_DEPTH_64F 可支持 */ char colorModel[4]; /* 被OpenCV忽略 */ char channelSeq[4]; /* 被OpenCV忽略 */ int dataOrder; /* 0 - 交叉存取颜色通道, 1 - 分开的颜色通 道.cvCreateImage只能创建交叉存取图像 */ int origin;/* 0 - 顶—左结构,1 - 底—左结构 (BMP风格) */ int align; /* 图像行排列 (4 or 8). OpenCV 用widthStep 代替 */

图像头结构接上一张PPT内容: int width; /* 图像宽像素数 */

int height; /* 图像高像素数*/struct _IplROI *roi;/* 图像感兴趣区域. 当该值非空只对该区域进行处理 */ struct _IplImage *maskROI; /* 在 OpenCV中必须置NULL */ void *imageId; /* 同上*/ struct _IplTileInfo *tileInfo; /*同上*/ int imageSize; /* 图像数据大小,单位字节*/ char *imageData; /* 指向第一行排列图像数据的指针 */

int widthStep; /* 排列的图像行大小,以字节为单位 */int BorderMode[4]; /* 边际结束模式, 被忽略*/ int BorderConst[4]; /* 边际结束模式, 被忽略*/

char *imageDataOrigin; /* 指针指向一个不同的图像数据结构,是为了纠正图像内存分配准备的 */ }IplImage;

…… 此处隐藏:1359字,全部文档内容请下载后查看。喜欢就下载吧 ……
OpenCV 数据结构和图像处理.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1529192.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)