OpenCV2.0文档:核心数据结构与数组操作

4星 · 超过85%的资源 需积分: 10 6 下载量 105 浏览量 更新于2024-10-07 收藏 4.23MB PDF 举报
"OpenCV2.0_使用手册.pdf" OpenCV(开源计算机视觉库)是一个强大的跨平台计算机视觉库,它包含了大量的图像处理和计算机视觉的算法。该手册主要介绍了OpenCV 2.0版本中的核心概念、数据结构和操作方法,适用于开发人员和研究人员进行图像分析、识别和处理工作。 1. CXCORE模块 CXCORE是OpenCV的核心模块,包含了基本的数据结构和运算操作。 1.1 基本结构 - **CvPoint**: 用于表示2D坐标点,包含两个整型变量x和y。 - **CvPoint2D32f**: 表示浮点数精度的2D坐标点。 - **CvPoint3D32f**: 表示浮点数精度的3D坐标点。 - **CvPoint2D64f** 和 **CvPoint3D64f**: 分别表示双精度浮点数的2D和3D坐标点。 - **CvSize**: 用于存储图像的宽度和高度,或者任何其他需要2个整数尺寸的情况。 - **CvSize2D32f**: 类似于CvSize,但用浮点数表示尺寸。 - **CvRect**: 描述一个矩形区域,包含左上角的CvPoint和宽度与高度。 - **CvScalar**: 用于存储颜色或单个值,通常在处理像素时使用。 - **CvTermCriteria**: 用于在迭代过程中设置终止条件,例如在达到特定迭代次数或误差阈值时停止。 1.2 数组操作 - **CvMat** 和 **CvMatND**: 分别表示多维连续和非连续的矩阵,是OpenCV中最基础的数据结构,用于存储图像和数值数组。 - **CvSparseMat**: 用于存储稀疏矩阵,即大部分元素为零的矩阵。 - **IplImage**: IPL(Intel Image Processing Library)图像结构,虽然在OpenCV 2.0中逐渐被CvMat取代,但在某些场合仍被使用。 - **CvArr**: 是一个通用接口,可以代表CvMat、IplImage等不同类型的数组。 1.2.1 数组初始化与管理 - **CreateImage**: 创建一个新的IplImage对象。 - **CreateImageHeader**: 创建图像头,不分配数据空间。 - **ReleaseImageHeader/ReleaseImage**: 释放图像头和数据空间。 - **InitImageHeader/InitMatHeader**: 初始化图像或矩阵的头部信息。 - **CloneImage/CloneMat/CloneMatND**: 复制图像或矩阵。 - **SetImageCOI/GetImageCOI**: 设置和获取图像的通道独立索引。 - **SetImageROI/ResetImageROI/GetImageROI**: 管理图像的感兴趣区域(ROI)。 - **CreateMat/CreateMatHeader/ReleaseMat**: 创建、初始化和释放CvMat对象。 - **CreateMatND/CreateMatNDHeader/ReleaseMatND**: 对于多维矩阵的相应操作。 - **DecRefData/IncRefData/CreateData/ReleaseData/SetData/GetRawData**: 管理数据引用计数和数据访问。 1.2.2 访问元素与子数组 - **GetSubRect**: 获取矩阵的一个子矩形区域。 - **GetRow/GetCol**: 获取矩阵的行或列。 - **Set**: 设置矩阵中的元素值。 - **Ptr**: 返回指向指定行的指针。 - **At**: 直接访问矩阵中的特定元素。 - **Push/PushBack**: 在向量或矩阵的末尾添加元素。 - **Pop**: 移除并返回向量或矩阵末尾的元素。 手册详细阐述了这些结构和操作的使用方法,对于理解和使用OpenCV进行图像处理和计算机视觉任务至关重要。通过这些基础,开发者能够构建复杂的图像处理流程,包括特征检测、图像变换、物体识别以及机器学习应用等。