opencv的基本数据类型_第1页
opencv的基本数据类型_第2页
opencv的基本数据类型_第3页
opencv的基本数据类型_第4页
opencv的基本数据类型_第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 图像处理和视觉算法 HighGUI GUI 图像和视频输入/输 出 CXCORE 基本结构和算法、XML 支持、绘图函数 图 6-1 OpenCV 的基本结构 图 6-1 中并没有包含 CvAux 模块,该模块中一般存放一些即将被淘汰的 算法和函数(如基于嵌入式隐马尔可夫模型的人脸识别算法),同时还有一些新 出现的实验性的算法和函数(如背景和前景的分割)。 2.4 OpenCV 中常用的数据结构及函数介绍 2.4.1 数据结构 OpenCV 提供了多种基本数据类型,虽然这些数据类型在 C 语言中不是基 本类型,但结构都很简单,可将它们作为原子类型。在运用 OpenCV 函数库进 行编程的过程中,常常会需要用到这些结构类型,只有真正了解这些结构才能 够很好地利用 OpenCV 函数库来解决问题。 下面对几个比较常用的简单结构进行介绍。 1)CvPoint 结构 在这些数据类型中最简单的就是 CvPoint,它表示二维坐标系下的点,类 型为整型,定义如下: typedef struct CvPoint int 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

提交评论