图像数据结构:
1) IPL 图像:
IplImage
|-- int nChannels; // 色彩通道数(1,2,3,4)
|-- int depth; // 象素色深:
| // IPL_DEPTH_8U, IPL_DEPTH_8S,
| // IPL_DEPTH_16U,IPL_DEPTH_16S,
| // IPL_DEPTH_32S,IPL_DEPTH_32F,
| // IPL_DEPTH_64F
|-- int width; // 图像宽度(象素点数)
|-- int height; // 图像高度(象素点数)
|-- char* imageData; // 指针指向成一列排列的图像数据
| // 注意色彩顺序为BGR
|-- int dataOrder; // 0 - 彩色通道交叉存取 BGRBGRBGR,
| // 1 - 彩色通道分隔存取 BBBGGGRRR
| // 函数cvCreateImage只能创建交叉存取的图像
|-- int origin; // 0 - 起点为左上角,
| // 1 - 起点为右下角(Windows位图bitmap格式)
|-- int widthStep; // 每行图像数据所占字节大小
|-- int imageSize; // 图像数据所占字节大小 = 高度*每行图像数据字节大小
|-- struct _IplROI *roi;// 图像ROI. 若不为NULL则表示需要处理的图像
| // 区域.
|-- char *imageDataOrigin; // 指针指向图像数据原点
| // (用来校准图像存储单元的重新分配)
|
|-- int align; // 图像行校准: 4或8字节校准
| // OpenCV不采用它而使用widthStep
|-- char colorModel[4]; // 图像色彩模型 - 被OpenCV忽略
2) 矩阵与向量
矩阵:
CvMat // 2维数组
|-- int type; // 元素类型(uchar,short,int,float,double)
|-- int step; // 一行所占字节长度
|-- int rows, cols; // 尺寸大小
|-- int height, width; // 备用尺寸参照
|-- union data;
|-- uchar* ptr; // 针对unsigned char矩阵的数据指针
|-- short* s; // 针对short矩阵的数据指针
|-- int* i; // 针对integer矩阵的数据指针
|-- float* fl; // 针对float矩阵的数据指针
|-- double* db; // 针对double矩阵的数据指针
CvMatND // N-维数组
|-- int type; // 元素类型(uchar,short,int,float,double)
|-- int dims; // 数组维数
|-- union data;
| |-- uchar* ptr; // 针对unsigned char矩阵的数据指针
| |-- short* s; // 针对short矩阵的数据指针
| |-- int* i; // 针对integer矩阵的数据指针
| |-- float* fl; // 针对float矩阵的数据指针
| |-- double* db; // 针对double矩阵的数据指针
|
|-- struct dim[]; // 每个维的信息
|-- size; // 该维内元素个数
|-- step; // 该维内元素之间偏移量
CvSparseMat // 稀疏N维数组
通用数组:
CvArr* // 仅作为函数参数,说明函数接受多种类型的数组,例如:
// IplImage*, CvMat* 或者 CvSeq*.
// 只需通过分析数组头部的前4字节便可确定数组类型
标量:
CvScalar
|-- double val[4]; //4D向量
初始化函数:
CvScalar s = cvScalar(double val0, double val1=0, double val2=0, double val3=0);
举例:
CvScalar s = cvScalar(20.0);
s.val[0]=10.0;
注意:初始化函数与数据结构同名,只是首字母小写. 它不是C++的构造函数.
3) 其他数据结构
点:
CvPoint p = cvPoint(int x, int y);
CvPoint2D32f p = cvPoint2D32f(float x, float y);
CvPoint3D32f p = cvPoint3D32f(float x, float y, float z);
例如:
p.x=5.0;
p.y=5.0;
长方形尺寸:
CvSize r = cvSize(int width, int height);
CvSize2D32f r = cvSize2D32f(float width, float height);
带偏移量的长方形尺寸:
CvRect r = cvRect(int x, int y, int width, int height);
分享到:
相关推荐
1.1.1 OpenCV主要功能及模块介绍 1、内置数据结构和输入/输出 OpenCV内置了丰富的与图像处理有关的数据结构,如Image、Point、Rectangle等。 core模块实现了各种基本的数据结构。 imgcodecs模块提供了图像文件的...
了解OpenCV的基本数据结构,如`Mat`对象,它是OpenCV中表示图像的主要方式。同时,学习基本的图像操作,如复制、裁剪、缩放、旋转和调整图像的亮度、对比度等。 4. **HighGUI** HighGUI是OpenCV中的用户界面模块...
### OpenCV基础知识详解 #### 一、OpenCV简介 OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉库,提供了大量的计算机视觉与图像处理功能。它由一系列超过500个函数组成,涵盖了许多计算机...
1. **Core Module**:提供基本的数据结构和运算操作,如图像读取、显示和保存等。 2. **HighGUI Module**:提供了用于图像和视频捕获的界面操作函数。 3. **Imgproc Module**:图像处理模块,支持各种图像变换操作,...
第四章“数据结构及数据操作”讲解了OpenCV中的关键数据结构,如Mat矩阵、IplImage等,以及如何使用它们进行图像操作。这部分内容包括图像的创建、访问像素、拷贝和比较,以及内存管理和效率优化技巧。 第五章...
1. **core模块**:这是OpenCV的基础,包含了基本的数据结构,如Mat(用于表示图像和矩阵),以及基本的运算函数。Mat对象是OpenCV中的核心,它可以存储单通道或多通道的图像数据,支持各种数学操作。 2. **imgproc...
这个“opencv基础教程实例源代码.zip”压缩包显然是为了帮助初学者理解和学习OpenCV的基本概念和功能而设计的。通过实践这些源代码,你可以逐步掌握OpenCV在实际应用中的操作。 首先,OpenCV主要涉及以下几个核心...
这个“OpenCV基础篇24例源代码”集合提供了24个示例,旨在帮助初学者理解和掌握OpenCV的基本功能和用法。在Windows环境下,这些示例可以通过双击.dsw文件在Visual C++ 6.0中打开并运行,而在Linux系统下,只需在终端...
OpenCV 的基本数据结构是学习 OpenCV 的基础,需要详细了解这些数据结构的使用方法。 OpenCV 的应用 OpenCV 的应用非常广泛,包括图像处理、物体检测、跟踪、识别等。OpenCV 的应用需要了解计算机视觉的基本原理和...
本文将详细记录学习OpenCV基础模块和DNN模块的心得,其中包含大量的注释源码,以便于读者理解并应用到实际开发中。 基础模块是学习OpenCV最先接触到的部分,主要包括图像处理、矩阵操作、视频处理、特征检测和提取...
OpenCV中的基本数据类型主要包括`cv::Mat`,它是用来表示图像的主要数据结构。`Mat`对象可以存储各种类型的数据,如8位无符号整数(用于灰度图像)、8位三通道颜色图像(BGR)等。此外,还有`Point`、`Rect`、`Size`...
通过阅读和理解这些代码,开发者可以学习到如何在实际项目中应用OpenCV进行基础矩阵的计算,进一步扩展到更复杂的计算机视觉任务,如立体视觉、结构光扫描和运动分析等。这不仅锻炼了编程技能,也加深了对计算机视觉...
C++版本的OpenCV通常需要手动管理内存和数据结构,因此需要更多的注意细节,如智能指针的使用和内存释放。 9. **实际应用**: 轮廓查找广泛应用于物体识别、运动分析、形状匹配、模板匹配等场景。例如,在自动驾驶...
从这些文档中,你可以系统地学习OpenCV的基础知识,包括图像数据结构、基本操作、图像变换、几何变换、特征检测、机器学习在OpenCV中的应用等。文档通常会通过丰富的示例和图解,让你更好地理解和掌握这些概念。 在...
**OpenCV基础知识** OpenCV(开源计算机视觉库)是一个跨平台的库,包含了众多计算机视觉和图像处理的功能。它支持图像读取、显示、处理、分析等操作,广泛应用于图像识别、特征检测、视频处理等领域。OpenCV的主要...
这个“opencv基础教程全部源码”压缩包显然提供了学习OpenCV的基础示例和练习代码,非常适合初学者或者想要深入理解OpenCV功能的开发者。 首先,OpenCV的核心功能包括图像读取、显示、处理、分析以及视频处理等。在...
总之,这个"opencv基础课程人脸识别dnn模型"会教授如何使用OpenCV的DNN模块结合深度学习模型进行实时人脸检测和识别。学习者将接触到深度神经网络的基础知识,了解如何加载和应用预训练模型,并掌握在实际应用中整合...
通常,这些PPT会涵盖OpenCV的基本概念,如图像数据结构、基本操作(如读取和显示图像)、颜色空间转换、滤波器应用、几何变换等。通过PPT的学习,你可以对OpenCV的架构和常用功能有一个全面的理解。 OpenCV函数速查...