OpenCV 数据结构和图像处理
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字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [幼儿教育]【完整版】2019-2025年中国药物发现外
- [幼儿教育]2018-2019年初中信息技术广东初一竞赛
- [幼儿教育]最新外研版(一起)小学英语五年级上册《
- [幼儿教育]农业推广与创新管理专业 -中农大毕业论
- [幼儿教育]2017-2022年中国更年期用药行业市场深
- [幼儿教育]数学1.1.2第1课时棱柱、棱锥和棱台的结
- [幼儿教育]二年级群文阅读课例欣赏
- [幼儿教育]2010-2015年中国保险行业投资分析及深
- [幼儿教育]厄运打不垮的信念第一课时
- [幼儿教育]巧用文本,让表达在言语中绽放论文
- [幼儿教育]中学生百科知识竞赛题及答案
- [幼儿教育]八大菜系英文简介
- [幼儿教育]中国男装牛仔裤市场发展研究及投资前景
- [幼儿教育]远程数字视频监控系统在银行的应用
- [幼儿教育]光纤光缆制造工艺及设备
- [幼儿教育]国家安全法试题及答案
- [幼儿教育]2011高中提前招生及竞赛试题(物理卷1)
- [幼儿教育]宁夏第三产业房地产业、科学研究和技术
- [幼儿教育]中兴通讯 ME3000模块用户硬件设计手册_
- [幼儿教育]紫外线灯管的辐照强度问题
- 苏联东欧剧变的原因和历史教训浅析
- 人工智能导论实验报告(学生)
- 思科ITE章考试原题及答案
- 《学习雷锋好榜样》主题班会教案
- 加油站建设项目安全评价报告
- 剖析社保卡管理系统
- 2017-2018年影视剧新媒体版权运营行业
- 2017-2018学年四川省成都市高一上学期
- 2019最新高中数学 第三章 3.2.1 几类不
- 2011-2015年中国基酸市场调查及行业前
- 人教版新课标选修八Unit 1 课件Warming
- 郭溪燎原小学辅导学生记录表
- 教师资格证统考综合素质写作秘笈
- 国外校园绿色建筑研究方向与建设实践
- 15.1 动物运动的方式 课件(北师大版八
- 民用飞机空调系统
- 长安侠文化传统与唐诗的任侠主题
- 《中国近现代史纲要》名词解释
- 11金本《保险学概论》复习资料
- 民用建筑机电安装工程专业施工图图纸会




