程序设计综合训练-opencv基础.ppt
《程序设计综合训练-opencv基础.ppt》由会员分享,可在线阅读,更多相关《程序设计综合训练-opencv基础.ppt(59页珍藏版)》请在三一办公上搜索。
1、,Southwest University of Science and Technology,程序设计综合训练OpenCV基础,张庆明2012/02/21,虚拟现实团队,个人简介,理学学士、工学博士,讲师中国民主促进会会员中国计算机学会(CCF)会员CCF-YOCSEF成都2012副主席西南科技大学三网融合技术咨询专家组秘书绵阳网络融合工程实验室科研秘书具有近10年数字视频技术方面的科研和教学工作。研究兴趣包括图像/视频处理、计算机视觉等。作为骨干成员参与完成了国家自然科学基金项目2项,横向项目2项。主持完成西南交通大学交通运输工程研究生创新实践基地项目基于X3D的虚拟现实技术在智能交通中的
2、运用1项,目前正在主持西南科技大学博士基金项目多视点视频传输差错控制技术研究和绵阳网络工程实验室项目网络视频流检索技术研究的科研工作。至今在国内外著名期刊杂志、国际会议上发表论文10余篇,其中5篇被EI收录,获发明专利1项。,主要内容,OpenCV概述OpenCV基本数据类型和数据结构OpenCV基本操作(图形界面、图像、视频)基本OpenCV程序与示例(包含于基本操作中讲解)课堂练习注:本讲义中部分代码来自OpenCV样例,部分代码来自OpenCV教程基础篇,部分讲义内容从网上收集。,OpenCV概述,Open=Open Source,CV=Computer VisionOpenCV(Ope
3、n Source Computer Vision Library)是Intel开源计算机视觉库。由一系列 C 函数和少量 C+类构成,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV 拥有包括 500 多个C函数的跨平台的中、高层 API,OpenCV 为Intel Integrated Performance Primitives(IPP)提供了透明接口。这意味着如果有为特定处理器优化的的 IPP 库,OpenCV 将在运行时自动加载这些库。跨平台:Windows,Linux免费(FREE):无论对非商业应用和商业应用 速度快、使用方便,OpenCV概述,OpenCV 的重要特性:
4、开源计算机视觉库采用C/C+编写;使用目的是开发实时应用程序;独立于操作系统、硬件和图形管理器;具有通用的图像/视频载入、保存和获取模块;具有底层和高层的应用开发包;,OpenCV概述,发展历史:2000年6月,第一个开源版本OpenCV alpha 3发布。2000年12月,针对linux平台的OpenCV beta 1发布。2006年,支持Mac OS的OpenCV 1.0发布。2009年9月,OpenCV 1.2(beta2.0)发布。2009年10月1日,Version 2.0发布。2010年12月6日,OpenCV 2.2发布。2011年8月,OpenCV 2.3发布。,OpenCV
5、概述,应用领域:1、人机互动 2、物体识别 3、图象分割 4、人脸识别 5、动作识别 6、运动跟踪 7、机器人,OpenCV概述,OpenCV功能概述:,矩阵和向量的操作以及线性代数算法的实现图像数据的操作及矩阵结构和图像结构的转换 基本的数字图像处理能力基本的GUI功能 其他功能,OpenCV概述,OpenCV概述资源网站:OpenCV中文站 OpenCV英文站 OpenCV项目主页:源代码及文档下载 http:/,OpenCV概述,OpenCV结构组成:,CV计算机视觉算法,HighGUI用户界面,CXCore基础数据结构,ML机器学习,CVAux附加库,OpenCV概述,OpenCV主要
6、模块库:,LIB,cv.lib:主要的OpenCV函数图像处理运动分析模式识别相机定标等,cxcore.lib:主要的数据结构线性代数支持,highgui.lib与图形界面相关的函数,cvaux.lib 辅助的OpenCV函数立体匹配、3D跟踪,cvcam.lib摄像头读取模块,ml.Lib机器学习库分类器实现回归分析,OpenCV概述,OpenCV编码样式:1、文件命名:有cv和cvaux库文件的命名必须服从于以下规则:所有的CV库文件名前缀为cv 混合的C/C+接口头文件扩展名为.h 纯C+接口头文件扩展名为.hpp 实现文件扩展名为.cpp 为了与POSIX兼容,文件名都以小写字符组成,
7、OpenCV概述,OpenCV编码样式:2、文件结构每个文件以BSD兼容的许可声明(模板在Contributors_BSD_Licsense.htm文件中可以找到)开头;一行最多90个字符,不包括行结束符 不使用制表符 缩进为4个空格符,所以制表符应该用1-4个空格替换(依据开始列确定)头文件必须使用保护宏,防止文件被重复包含。混合C/C+接口头文件用extern C 包含C语言定义。为了使预编译头机制在Visual C+中工作正常,源文件必须在其它头文件前包含precomp.h头文件。,OpenCV概述,OpenCV编码样式:3、命名约定OpenCV中使用大小写混合样式来标识外部函数、数据类
8、型和类方法。宏全部使用大写字符,词间用下划线分隔。所有的外部或内部名称,若在多个文件中可见,则必须含有前缀:外部函数使用前缀cv 内部函数使用前缀Icv 数据结构(C结构体、枚举、联合体、类)使用前缀Cv 外部或某些内部宏使用前缀CV_ 内部宏使用前缀ICV_,OpenCV概述,OpenCV编码样式:4、函数接口设计:为了保持库的一致性,以如下方式设计接口非常重要。函数接口元素包括:功能 名称 返回值 参数类型 参数顺序 参数默认值 函数功能必须定义良好并保持精简。函数应该容易镶入到使用其它OpenCV函数的不同处理过程。函数名称应该简单并能体现函数的功能。大多数函数名形式:cv,OpenCV
9、概述,通道的概念:独立的颜色平面 可简单理解为表示一个像素需要几个元素 1通道:描述一个像素点,如果是灰度,那么只需要一个数值来描述它,就是单通道,为1。2通道:2通道图像不常见,通常在程序处理中会用到,如傅里叶变换,可能会用到,一个通道为实数,一个通道为虚数,主要是编程方便;还有一种情况就是16位图像,本来是3通道,但是为了减少数据量,压缩为16位,刚好两个通道,常见格式有RGB555或RGB565,也就是说R占5位,G占5或6位,B占5位,也有RGBA5551格式。古老的格式,不用也罢。3通道:如果一个像素点,由RGB三种颜色来描述它,就是三通道,为3。4通道:windows的bmp有时候
10、是一个四通道图像,R、G、B加上一个A通道,一般叫做alpha通道,表示透明度。,OpenCV概述,ROI的概念:ROI在opencv中是指Region of interest,感兴趣的区域的意思。COI的概念:COI是Channel of interest的意思。在计算机表示图像的时候,是按RGBAplfa来表示一个像素的。每个R,G,B,Alfa都是一个Channel.Region是指图像中的某一部分。,OpenCV基本数据类型和数据结构,基本数据类型:点:CvPoint、CvPoint2D32f、CvPoint3D32f 矩形框大小:CvSize、CvSize2D32f 矩形框:CvRe
11、ct 可以存放1-4个数值的数组:CvScalar 定义迭代算法的终止规则:CvTermCriteria 矩阵: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);/*从 CvPoint2D3
12、2f类型转换得来*/inline CvPoint cvPointFrom32f(CvPoint2D32f point)CvPoint2D32f:二维坐标下的点,类型为浮点CvPoint3D32f:三维坐标下的点,类型为浮点,OpenCV基本数据类型和数据结构,矩形数据结构:CvSize 矩形框大小,以像素为精度 typedef struct CvSizeint width;/*矩形宽*/int height;/*矩形高*/CvSize;/*构造函数*/inline CvSize cvSize(int width,int height);CvSize2D32f,OpenCV基本数据类型和数据结构
13、,矩形数据结构:CvRect 矩形框的偏移和大小 typedef struct CvRectint 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;/*以字
14、节为单位的行数据长度*/int*refcount;/*数据引用计数*/union uchar*ptr;short*s;int*i;float*fl;double*db;data;/*data 指针*/#ifdef _cplusplus union int rows;int height;union int cols;int width;#else int rows;/*行数*/int cols;/*列数*/#endif CvMat;,OpenCV基本数据类型和数据结构,矩阵数据结构:int type;矩阵通用矩阵数据类型:CV_(S|U|F)CS:带符号整数U:无符号整数F:浮点数。例:CV_
15、8UC1:8位无符号单通道矩阵;CV_32FC2:32位浮点数双通道矩阵。,OpenCV基本数据类型和数据结构,矩阵数据结构:int*refcount;数据引用计数 refcount=NULL:矩阵的数据区为外部数据,不需释放 refcount!=NULL:需要释放矩阵头和数据区。int step;以字节为单位的行数据长度是定位元素所需要的行信息,OpenCV基本数据类型和数据结构,矩阵数据结构:union uchar*ptr;short*s;int*i;float*fl;double*db;data;指向数据区首地址的指针。指针是公用体结构,使用时要根据矩阵的数据类型选择。,OpenCV基本
16、数据类型和数据结构,图像头结构: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
17、colorModel4;char channelSeq4;/*被OpenCV忽略*/int dataOrder;/*0-交叉存取颜色通道,1-分开的颜色通道.cvCreateImage只能创建交叉存取图像*/int origin;/*0-顶左结构,1-底左结构(BMP风格)*/int align;/*图像行排列(4 or 8).OpenCV 用widthStep 代替*/,OpenCV基本数据类型和数据结构,图像头结构:int width;/*图像宽像素数*/int height;/*图像高像素数*/struct _IplROI*roi;/*图像感兴趣区域.当该值非空只对该区域进行处理*/st
18、ruct _IplImage*maskROI;/*在 OpenCV中必须置NULL*/void*imageId;/*同上*/struct _IplTileInfo*tileInfo;/*同上*/int imageSize;/*图像数据大小,单位字节*/char*imageData;/*指向排列的图像数据*/int widthStep;/*排列的图像行大小,以字节为单位*/int BorderMode4;int BorderConst4;/*边际结束模式,被忽略*/char*imageDataOrigin;/*指针指向一个不同的图像数据结构,是为了纠正图像内存分配准备的*/IplImage;,O
19、penCV基本数据类型和数据结构,图像头结构:IplImage结构来自于 Intel Image Processing Library。OpenCV 只支持其中的一个子集:alphaChannel 在OpenCV中被忽略。colorModel 和channelSeq 被OpenCV忽略。dataOrder 必须是IPL_DATA_ORDER_PIXEL(颜色通道是交叉存取),然而平面图像的被选择通道可以被处理,就像COI(感兴趣的通道)被设置过一样。align 是被OpenCV忽略的,而用 widthStep 去访问后继的图像行。不支持maskROI。处理MASK的函数把他当作一个分离的参数。
20、MASK在 OpenCV 里是 8-bit,然而在 IPL他是 1-bit。tileInfo 不支持。BorderMode和BorderConst是不支持的。OpenCV处理ROI有不同的要求。要求原图像和目标图像的尺寸或 ROI的尺寸必须精确匹配。,OpenCV基本数据类型和数据结构,图像头结构:int depth;图像通用数据类型:IPL_DEPTH_(S|U|F)S、U、F的意义同矩阵数据类型。例:IPL_DEPTH_8U:8位无符号整数图像 IPL_DEPTH_32F:32位浮点数图像int nChannels;图像的通道数例:灰度图为1个通道复值图像为2个通道RGB图像为3个通道RG
21、BA图像为4个通道(A通道即阿尔法通道,下去查资料了解)大多数OpenCV函数支持14个通道,OpenCV基本数据类型和数据结构,图像头结构:int dataOrder;图像数据的存储格式 0:交叉存取颜色通道 1:分开存取颜色通道OpenCV函数只支持交叉存取的图像。int widthStep;排列的图像行长度,以字节为单位 与矩阵结构中的step成员相似,OpenCV基本数据类型和数据结构,图像头结构:struct _IplROI*roi;ROI:Region Of Interest(感兴趣区域)roi=NULL:整幅图像参与运算roi!=NULL:ROI区域代替图像参加运算ROI的操作:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 综合 训练 opencv 基础
链接地址:https://www.31ppt.com/p-6596238.html