OpenCV的基本数据类型.doc_第1页
OpenCV的基本数据类型.doc_第2页
OpenCV的基本数据类型.doc_第3页
OpenCV的基本数据类型.doc_第4页
OpenCV的基本数据类型.doc_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OpenCV简介 OpenCV是Intel公司支持的开源计算机视觉库。它轻量级而且高效由一系列 C函数和少量 C+ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。1999年在俄罗斯设立的软件开发中心“Software Developmellt Cellter开发的。 OpenCV采用C/C+语言编写,可以运行在Linux/Windows/Mac等操作系统上。OpenCV还提供了Python、Ruby、MATLAB以及其他语言的接口。OpenCV的设计目标是执行速度尽量快,主要关注实时应用。它采用优化的C代码编写,能够充分利用多核处理器的优势。如果是希望在Intel平台上得到更快的处理速度,可以购买Intel的高性能多媒体函数库IPP(Integrated Performance Primitives)。IPP库包含许多从底层优化的函数,这些函数涵盖多个应用领域。如果系统已经安装了IPP库,OpenCV会在运行时自动使用相应的IPP库。OpenCV的一个目标是构建一个简单易用的计算机视觉框架,以帮助开发人员更便捷地设计更复杂的计算机视觉相关应用程序。OpenCV包含的函数有500多个,覆盖了计算机视觉的许多应用领域,如工厂产品检测、医学成像、信息安全、用户界面、摄像机标定、立体视觉和机器人等。因为计算机视觉和机器学习密切相关,所以OpenCV还提供了MLL(Machine Learning Library)机器学习库。该机器学习库侧重于统计方面的模式识别和聚类(clustering)。MLL除了用在视觉相关的任务中,还可以方便地应用于其他的机器学习场合。OpenCV的基本结构OpenCV主体分为五个模块,其中四个模块如图6-1所示。OpenCV的CV模块包含基本的图像处理函数和高级的计算机视觉算法。ML是机器学习库,包含一些基于统计的分类和聚类工具。HighGUI包含图像和视频输入/输出的函数。CXCore包含OpenCV的一些基本数据结构和相关函数。MLL统计分类器CV图像处理和视觉算法HighGUIGUI图像和视频输入/输出CXCORE基本结构和算法、XML支持、绘图函数图6-1 OpenCV的基本结构图6-1中并没有包含CvAux模块,该模块中一般存放一些即将被淘汰的算法和函数(如基于嵌入式隐马尔可夫模型的人脸识别算法),同时还有一些新出现的实验性的算法和函数(如背景和前景的分割)。2.4 OpenCV中常用的数据结构及函数介绍2.4.1数据结构OpenCV提供了多种基本数据类型,虽然这些数据类型在C语言中不是基本类型,但结构都很简单,可将它们作为原子类型。在运用OpenCV函数库进行编程的过程中,常常会需要用到这些结构类型,只有真正了解这些结构才能够很好地利用OpenCV函数库来解决问题。下面对几个比较常用的简单结构进行介绍。1)CvPoint结构在这些数据类型中最简单的就是CvPoint,它表示二维坐标系下的点,类型为整型,定义如下:typedef struct CvPointint x; /* x坐标, 通常以0为基点 */int y; /* y坐标, 通常以0为基点 */ CvPoint;2)CvSize结构 CvSize结构用来表示矩形框大小,以像素为精度,结构体中分别定义了矩形的宽高和高度,定义如下:typedef struct Cvsize int width; /*矩形宽度,单位为像素*/ int height; /*矩形高度,单位为像素*/ CvSize;3) CvRect结构 该结构是用来表示矩形框的偏移和大小。typedef struct CvRect int x; /* 方形的最左角的x-坐标 */ int y; /* 方形的最上或者最下角的y-坐标 */ int width; /* 宽 */ int height; /* 高 */ CvRect;4) CvScalar 结构 该结构是用来定义存放1- 4个数值的数组。typedef struct Cvscalar double val4; CvScalar; /可用来表示RGBA的值,Aalpha透明度5)IplImage 结构 OpenCV库主要是使用“IplImage”结构体来创造和处理图像。IplImage结构来源于inter的另外一个函数库IPL,该函数库主要是针对图像处理。定义如下:typedef struct IplImage int nSize; /*IplImage大小*/ int ID; /*版本(=0)*/ int nChannels; /*大多数opencv函数支持14个信道*/ int depth; /*像素的位深度*/ int dataOrder; /*0:交叉存取颜色信道。1:分开的颜色信道。只有cvCreateImage可以创建交叉存取图像*/ int origin; /*0:顶左结构,1:底左结构*/ int width; /* 图像宽像素 */ int heighet; /*图像高像素*/ struct_IplROI *roi; /*图像感兴趣区域*/ int imageSize; /*图像数据大小*/ int widthStep; /*排列的图像大小,以字节为单位*/ IplImage;2.4.2常用函数下面介绍一下OpenCV中常用的几个函数,也是利用OpenCV进行特定目标体识别的过程中常用到的函数,分别说明如下。1)cvLoadImage( ):载入图像IplImage* cvLoadImage( const char* filename, int iscolor=CV_LOAD_IMAGE_COLOR );filename:要被读入的文件的文件名。iscolor:指定读入图像的颜色和深度。指定的颜色可以将输入的图片转为3信道(CV_LOAD_IMAGE_COLOR),单信道(CV_LOAD_IMAGE_GRAYSCALE),或者保持不变(CV_LOAD_IMAGE_ANYCOLOR)。2)cvShowImage( ):在指定窗口中显示图像void cvShowIma

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论