`
Riddick
  • 浏览: 642212 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

OpenCV基础数据结构

阅读更多

图像数据结构:

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);

 

分享到:
评论

相关推荐

    OpenCV计算机视觉基础教程(Python版)(慕课版)-(1).pptx

    1.1.1 OpenCV主要功能及模块介绍 1、内置数据结构和输入/输出 OpenCV内置了丰富的与图像处理有关的数据结构,如Image、Point、Rectangle等。 core模块实现了各种基本的数据结构。 imgcodecs模块提供了图像文件的...

    OpenCV基础知识

    了解OpenCV的基本数据结构,如`Mat`对象,它是OpenCV中表示图像的主要方式。同时,学习基本的图像操作,如复制、裁剪、缩放、旋转和调整图像的亮度、对比度等。 4. **HighGUI** HighGUI是OpenCV中的用户界面模块...

    一个介绍opencv基础的ppt

    ### OpenCV基础知识详解 #### 一、OpenCV简介 OpenCV(Open Source Computer Vision Library)是一个开源计算机视觉库,提供了大量的计算机视觉与图像处理功能。它由一系列超过500个函数组成,涵盖了许多计算机...

    OpenCV教程—基础

    1. **Core Module**:提供基本的数据结构和运算操作,如图像读取、显示和保存等。 2. **HighGUI Module**:提供了用于图像和视频捕获的界面操作函数。 3. **Imgproc Module**:图像处理模块,支持各种图像变换操作,...

    OpenCV教程基础篇PDF书籍与书中源码

    第四章“数据结构及数据操作”讲解了OpenCV中的关键数据结构,如Mat矩阵、IplImage等,以及如何使用它们进行图像操作。这部分内容包括图像的创建、访问像素、拷贝和比较,以及内存管理和效率优化技巧。 第五章...

    Opencv视频教程之Opencv结构与内容.ppt

    1. **core模块**:这是OpenCV的基础,包含了基本的数据结构,如Mat(用于表示图像和矩阵),以及基本的运算函数。Mat对象是OpenCV中的核心,它可以存储单通道或多通道的图像数据,支持各种数学操作。 2. **imgproc...

    opencv基础教程实例源代码.zip

    这个“opencv基础教程实例源代码.zip”压缩包显然是为了帮助初学者理解和学习OpenCV的基本概念和功能而设计的。通过实践这些源代码,你可以逐步掌握OpenCV在实际应用中的操作。 首先,OpenCV主要涉及以下几个核心...

    OpenCV基础篇24例源代码

    这个“OpenCV基础篇24例源代码”集合提供了24个示例,旨在帮助初学者理解和掌握OpenCV的基本功能和用法。在Windows环境下,这些示例可以通过双击.dsw文件在Visual C++ 6.0中打开并运行,而在Linux系统下,只需在终端...

    OpenCV入门教程.pdf

    OpenCV 的基本数据结构是学习 OpenCV 的基础,需要详细了解这些数据结构的使用方法。 OpenCV 的应用 OpenCV 的应用非常广泛,包括图像处理、物体检测、跟踪、识别等。OpenCV 的应用需要了解计算机视觉的基本原理和...

    OpenCV学习笔记(C++版OpenCV学习笔记,主要包括基础模块和DNN模块)带详细注释源码!!!

    本文将详细记录学习OpenCV基础模块和DNN模块的心得,其中包含大量的注释源码,以便于读者理解并应用到实际开发中。 基础模块是学习OpenCV最先接触到的部分,主要包括图像处理、矩阵操作、视频处理、特征检测和提取...

    OpenCV教程+基础篇2

    OpenCV中的基本数据类型主要包括`cv::Mat`,它是用来表示图像的主要数据结构。`Mat`对象可以存储各种类型的数据,如8位无符号整数(用于灰度图像)、8位三通道颜色图像(BGR)等。此外,还有`Point`、`Rect`、`Size`...

    vc++平台利用opencv计算基础矩阵

    通过阅读和理解这些代码,开发者可以学习到如何在实际项目中应用OpenCV进行基础矩阵的计算,进一步扩展到更复杂的计算机视觉任务,如立体视觉、结构光扫描和运动分析等。这不仅锻炼了编程技能,也加深了对计算机视觉...

    【OpenCv基础】第三十七讲 基础轮廓查找

    C++版本的OpenCV通常需要手动管理内存和数据结构,因此需要更多的注意细节,如智能指针的使用和内存释放。 9. **实际应用**: 轮廓查找广泛应用于物体识别、运动分析、形状匹配、模板匹配等场景。例如,在自动驾驶...

    OpenCV教程基础篇书中的光盘内容(源码,包括pdf文档)

    从这些文档中,你可以系统地学习OpenCV的基础知识,包括图像数据结构、基本操作、图像变换、几何变换、特征检测、机器学习在OpenCV中的应用等。文档通常会通过丰富的示例和图解,让你更好地理解和掌握这些概念。 在...

    opencv基础,pytorch 基础知识,pytorch实现的基础的网络结构

    **OpenCV基础知识** OpenCV(开源计算机视觉库)是一个跨平台的库,包含了众多计算机视觉和图像处理的功能。它支持图像读取、显示、处理、分析等操作,广泛应用于图像识别、特征检测、视频处理等领域。OpenCV的主要...

    opencv基础教程全部源码

    这个“opencv基础教程全部源码”压缩包显然提供了学习OpenCV的基础示例和练习代码,非常适合初学者或者想要深入理解OpenCV功能的开发者。 首先,OpenCV的核心功能包括图像读取、显示、处理、分析以及视频处理等。在...

    opencv基础课程人脸识别dnn模型

    总之,这个"opencv基础课程人脸识别dnn模型"会教授如何使用OpenCV的DNN模块结合深度学习模型进行实时人脸检测和识别。学习者将接触到深度神经网络的基础知识,了解如何加载和应用预训练模型,并掌握在实际应用中整合...

    Opencv基础学习资料集(含SDK中文参数手册)

    通常,这些PPT会涵盖OpenCV的基本概念,如图像数据结构、基本操作(如读取和显示图像)、颜色空间转换、滤波器应用、几何变换等。通过PPT的学习,你可以对OpenCV的架构和常用功能有一个全面的理解。 OpenCV函数速查...

Global site tag (gtag.js) - Google Analytics