OpenCV----OpenCV基础数据结构

图像数据结构

  • 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;         //
图像行校准: 48字节校准
  |                       // OpenCV
不采用它而使用widthStep
  |-- char colorModel[4]; //
图像色彩模型 - OpenCV忽略

矩阵与向量

  • 矩阵:

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++的构造函数.

其他数据结构

  • :

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

你可能感兴趣的:(数据结构,windows,struct,null,Integer,float)