• [OpenCV学习笔记1][OpenCV基本数据类型]


    CvPoint
    基于二维整形坐标轴的点
    typedef struct CvPoint
    {
    int x; /* X 坐标, 通常以 0 为基点 */
    int y; /* y 坐标,通常以 0 为基点 */
    }
    CvPoint;
    /* 构造函数 */
    inline CvPoint cvPoint( int x, int y );
    /* 从 CvPoint2D32f 类型转换得来 */
    inline CvPoint cvPointFrom32f( CvPoint2D32f point );

    CvPoint
    基于二维整形坐标轴的点
    typedef struct CvPoint
    {
    int x; /* X 坐标, 通常以 0 为基点 */
    int y; /* y 坐标,通常以 0 为基点 */
    }
    CvPoint;
    /* 构造函数 */
    inline CvPoint cvPoint( int x, int y );
    /* 从 CvPoint2D32f 类型转换得来 */
    inline CvPoint cvPointFrom32f( CvPoint2D32f point );
    /* 构造函数 */
    inline CvPoint2D32f cvPoint2D32f( double x, double y );
    /* 从 CvPoint 转换来 */
    inline CvPoint2D32f cvPointTo32f( CvPoint point );


    CvPoint3D32f
    三维浮点坐标上的点
    typedef struct CvPoint3D32f
    {
    float x; /* x-坐标,通常基于 0 */
    float y; /* y-坐标, 通常基于 0*/
    float z; /* z-坐标,通常基于 0 */
    }
    CvPoint3D32f;
    /* 构造函数 */
    inline CvPoint3D32f cvPoint3D32f( double x, double y, double z );

    CvPoint2D64f
    2D point with double precision floating-point coordinates
    typedef struct CvPoint2D64f
    {
    double x; /* x-坐标,通常基于 0 */
    double y; /* y-坐标,通常基于 0 */
    }
    CvPoint2D64f;
    /* 构造函数 */
    inline CvPoint2D64f cvPoint2D64f( double x, double y );
    /* 从 CvPoint 转换得来 */
    inline CvPoint2D64f cvPointTo64f( CvPoint point );
    CvPoint3D64f
    3D point with double precision floating-point coordinates
    typedef struct CvPoint3D64f
    {
    double x; /* x-坐标,通常基于 0 */
    double y; /* y-坐标,通常基于 0 */
    double z; /* z-坐标,通常基于 0 */
    }
    CvPoint3D64f;
    /* 构造函数 */
    inline CvPoint3D64f cvPoint3D64f( double x, double y, double z );
    }
    CvPoint3D64f;
    /* 构造函数 */
    inline CvPoint3D64f cvPoint3D64f( double x, double y, double z );
    CvSize
    矩形框大小,以像素为精度
    typedef struct CvSize
    {
    int width; /* 矩形宽 */
    int height; /* 矩形高 */
    }
    CvSize;
    /* 构造函数 */
    inline CvSize cvSize( int width, int height );
    CvSize2D32f
    以低像素精度标量矩形框大小
    typedef struct CvSize2D32f
    {
    float width; /* 矩形宽 */
    float height; /* 矩形高 */
    }
    CvSize2D32f;
    /* 构造函数*/
    inline CvSize2D32f cvSize2D32f( double width, double height );
    CvRect
    矩形框的偏移和大小
    typedef struct CvRect
    {
    int x; /* 方形的最左角的 x-坐标 */
    int y; /* 方形的最上或者最下角的 y-坐标 */
    int width; /* 宽 */
    int height; /* 高 */
    }
    CvRect;
    /* 构造函数*/
    inline CvRect cvRect( int x, int y, int width, int height );
    CvScalar
    可存放在 1-2-3-4-TUPLE 类型的捆绑数据的容器
    typedef struct CvScalar
    {
    double val[4]
    }
    CvScalar;
    /* 构造函数:用 val0 初始化 val[0]val1 初始化 val[1]等等*/
    inline CvScalar cvScalar( double val0, double val1=0,
    double val2=0, double val3=0 );
    /* 构造函数:用 val0123 初始化 val0123 */
    inline CvScalar cvScalarAll( double val0123 );
    /* 构造函数:用 val0 初始化 val[0],val[1]…val[3]0 初始化 */
    inline CvScalar cvRealScalar( double val0 );
    CvTermCriteria
    迭代算法的终止标准
    #define CV_TERMCRIT_ITER 1
    #define CV_TERMCRIT_NUMBER CV_TERMCRIT_ITER
    #define CV_TERMCRIT_EPS 2
    typedef struct CvTermCriteria
    {
    int type; /* CV_TERMCRIT_ITER 和 CV_TERMCRIT_EPS 的联合 */
    int max_iter; /* 迭代的最大数 */
    double epsilon; /* 结果的精确性 */
    }
    CvTermCriteria;
    /* 构造函数 */
    inline CvTermCriteria cvTermCriteria( int type, int max_iter, double
    epsilon );
    /* 检查终止标准并且转换使 type=CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,并且满足
    max_iter 和 epsilon 限制条件 */
    CvTermCriteria cvCheckTermCriteria( CvTermCriteria criteria,
    double default_eps,
    int default_max_iters );
    CvMat
    多通道矩阵
    typedef struct CvMat
    {
    int type; /* CvMat 标识 (CV_MAT_MAGIC_VAL), 元素类型和标记 */
    int step; /* 以字节为单位的行数据长度*/
    int* refcount; /* 数据参考计数 */
    union
    {
    uchar* ptr;
    short* s;
    int* i;
    float* fl;
    double* db;
    } data; /* data 指针 */
    #ifdef __cplusplus
    union
    {
    int rows;
    int height;
    };
    union
    {
    int cols;
    int width;
    };
    #else
    int rows; /* 行数 */
    int cols; /* 列数*/
    #endif
    } CvMat;
    CvMatND
    多维、多通道密集数组
    typedef struct CvMatND
    {
    int type; /* CvMatND 标识(CV_MATND_MAGIC_VAL), 元素类型和标号*/
    int dims; /* 数组维数 */
    int* refcount; /* 数据参考计数 */
    union
    {
    uchar* ptr;
    short* s;
    int* i;
    float* fl;
    double* db;
    } data; /* data 指针*/
    /* 每维的数据结构 (元素号,以字节为单位的元素之间的距离)是配套定义的
    */
    struct
    {
    int size;
    int step;
    }
    dim[CV_MAX_DIM];
    } CvMatND;
    CvSparseMat
    多维、多通道稀疏数组
    typedef struct CvSparseMat
    {
    int type; /* CvSparseMat 标识 (CV_SPARSE_MAT_MAGIC_VAL), 元素类型和
    标号 */
    int dims; /* 维数 */
    int* refcount; /* 参考数量 - 未用 */
    struct CvSet* heap; /* HASH 表节点池 */
    void** hashtable; /* HASH 表:每个入口有一个节点列表,有相同的 "以 HASH
    大小为模板的 HASH 值" */
    int hashsize; /* HASH 表大小 */
    int total; /* 稀疏数组的节点数 */
    int valoffset; /* 数组节点值在字节中的偏移 */
    int idxoffset; /* 数组节点索引在字节中的偏移 */
    int size[CV_MAX_DIM]; /*维大小 */
    } CvSparseMat;
    IplImage
    IPL 图像头
    typedef struct _IplImage
    {
    int nSize; /* IplImage 大小 */
    int ID; /* 版本 (=0)*/
    int nChannels; /* 大多数 OPENCV 函数支持 1,2,3 或 4 个通道 */
    int alphaChannel; /* 被 OpenCV 忽略 */
    int depth; /* 像素的位深度: IPL_DEPTH_8U, IPL_DEPTH_8S,
    IPL_DEPTH_16U,
    IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F
    and IPL_DEPTH_64F 可支持 */
    char colorModel[4]; /* 被 OpenCV 忽略 */
    char channelSeq[4]; /* 同上 */
    int dataOrder; /* 0 - 交叉存取颜色通道, 1 - 分开的颜色通道.
    只有 cvCreateImage 可以创建交叉存取图像 */
    int origin; /* 0 - 顶—左结构,
    1 - 底—左结构 (Windows bitmaps 风格) */
    int align; /* 图像行排列 (4 or 8). OpenCV 忽略它,使用
    widthStep 代替 */
    int width; /* 图像宽像素数 */
    int height; /* 图像高像素数*/
    struct _IplROI *roi;/* 图像感兴趣区域. 当该值非空只对该区域进行处理
    */
    struct _IplImage *maskROI; /* 在 OpenCV 中必须置 NULL */
    void *imageId; /* 同上*/
    struct _IplTileInfo *tileInfo; /*同上*/
    int imageSize; /* 图像数据大小(在交叉存取格式下
    imageSize=image->height*image->widthStep),单位字节*/
    char *imageData; /* 指向排列的图像数据 */
    int widthStep; /* 排列的图像行大小,以字节为单位 */
    int BorderMode[4]; /* 边际结束模式, 被 OpenCV 忽略 */
    int BorderConst[4]; /* 同上 */
    char *imageDataOrigin; /* 指针指向一个不同的图像数据结构(不是必须排
    列的),是为了纠正图像内存分配准备的 */
    }
    IplImage;
    IplImage 结构来自于 Intel Image Processing Library(是其本身所具有的). OpenCV
    只支持其中的一个子集:
    alpha 通道在 OpenCV 中被忽略.
    colorModel channelSeq OpenCV 忽略. OpenCV 颜色转换的 唯一个函数
    cvCvtColor 把原图像的颜色空间的目标图像的颜色空间作为一个参数.
    数据顺序 必须是 IPL_DATA_ORDER_PIXEL (颜色通道是交叉存取), 然面平面图像的被选
    择通道可以被处理,就像 COI(感兴趣的通道)被设置过一样.
    widthStep 被用于去接近图像行序列,排列是被 OpenCV 忽略的.
    不支持 maskROI . 处理 MASK 的函数把他当作一个分离的参数. MASK OpenCV 里是
    8-bit, 然而在 IPL 他是 1-bit.
    名字信息不支持.
    边际模式和边际常量是不支持的. 每个 OpenCV 函数处理像素的邻近的像素,通常使
    用单一的固定代码边际模式.
    除了上述限制, OpenCV 处理 ROI 有不同的要求.要求原图像和目标图像的尺寸或 ROI 的尺寸必须
    (根据不同的作操,例如 cvPyrDown 目标图像的宽(高)必须等于原图像的宽(高)除 2 ±1)精确
    匹配,IPL 处理交叉区域,如图像的大小或 ROI 大小可能是完全独立的。
    CvArr
    不确定数组
    typedef void CvArr;
    CvArr* 仅仅是被用于作函数的参数,用于指示函数接收的数组类型可以不止一个,如
    IplImage*, CvMat* 甚至 CvSeq*. 最终的数组类型是在运行时通过分析数组头的前 4
    个字节判断。


  • 相关阅读:
    车载导航系统中GPS的定位
    《开源框架那点事儿25》:对框架模板引擎实现方式的改造实录
    Mysql insert语句的优化
    Codeforces 475 D. CGCDSSQ
    提高代码编码的效率,习惯非常重要!
    ubuntu14.04 安装LNMP
    Unity3d数据加密
    第14章3节《MonkeyRunner源代码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化
    Polyfill简介
    只在需要的时候 Polyfill 你的 JavaScript 代码
  • 原文地址:https://www.cnblogs.com/Jack-Tango/p/8322476.html
Copyright © 2020-2023  润新知