首页 > 其他 > 详细

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

时间:2014-06-05 10:13:01      阅读:294      评论:0      收藏:0      [点我收藏+]


图像数据结构

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


OpenCV基础数据结构--基础入门,布布扣,bubuko.com

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

原文:http://blog.csdn.net/feixiang_john/article/details/27340629

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!