opencv学习之数据结构与数据操作

本文详细介绍了OpenCV中的基础结构,包括CvPoint、CvMat等,并讲解了数组操作,如初始化、获取元素、复制和添加,以及动态结构如序列、集合、图和树的操作。此外,还涵盖了绘图函数、数据保存和运行时类型信息的相关内容。
摘要由CSDN通过智能技术生成

基础结构

  • CvPoint
//CvPoint定义基于二维坐标的点
typedef struct CvPoint{
    int x;
    int y;
}CvPoint;
//构造函数
inline CvPoint cvPoint(int x,int y);
//从CvPoint2D32f转换而来
inline cvPoint cvPointFrom32f(CvPoint2D32f point);
CvPoint pt1,pt2;
pt1.x = 233;
pt1.y = 133;
pt2.x = 324;
pt2.y = 200;
  • CvPoint2D32f
//定义基于二维浮点坐标的点
typedef struct CvPoint2D32f{
    float x;
    float y;
}CvPoint2D32f;
//构造函数
inline CvPoint2D32f cvPoint2D32f(double x,double y);
inline CvPoint2D32f cvPointTo32f(CvPoint point);
  • CvPoint3D32f
//定义基于三维浮点坐标的点
typedef struct CvPoint3D32f{
    float x;
    float y;
    float z;
}CvPoint3D32f;
//构造函数
inline CvPoint3D32f cvPoint3D32f(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;
    int y;
    int width;
    int height;
}CvRect;
incline CvRect cvRect(...);
  • CvScalar
//定义可以存放1-4个数值的数组
typedef struct CvScalar{
    double val[4];
}CvScalar;
//赋值初始化
inline CvScalar cvScalar(double val0,double val1,double val2,double val3);
inline CvScalar cvScalarAll(double val0123);
inline CvScalar cvRealScalar(double val0,0,0,0);
  • CvTermCriteria
//定义迭代算法的终止准则
#define CV_TERMCRIT_ITER 1
#define CV_TERMCRIT_NUMBER CV_TERMCRIT_ITER
#define CV_TERMCRIT_EPS 2
typedef struct CvTermCriteria{
    int type;
    int max_iter;//最大迭代次数
    double epsilon;//精确度
}CvTermCriteria;
  • CvMat
//定义多通道矩阵
typedef struct CvMat{
    int type;
    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;
    int dims;//数组维数
    int* refcount;//数据参考计数
    union{
        uchar* ptr;
        short* s;
        int* i;
        float* fl;
        double* db;
    }data;
    struct{
        int size;
        int step;
    }dim[CV_MAX_DIM];
}CvMatND;
  • CvSparseMat
//定义多维、多通道稀疏数组
typedef ...{
    int type;
    int dims;
    int* refcount;
    struct CvSet* heap;//哈希表节点池
    void** hashtable;
    int hashsize;
    int total;//数组节点数
    int valoffset;//数组节点值在字节中的偏移
    int idxoffset;//节点索引偏移
    int size[CV_MAX_DIM];//维数大小
}CvSparseMat;
  • IplImage
//定义图像的头部
typedef struct _IplImage{
    int nSize;//大小
    int ID;
    int nChannels;
    int alphaChannel;
    int depth;//像素位数
    char colorMode[4];
    char channelSeq[4];
    int dataOrder;//交叉、分开的颜色通道
    int origin;
    int align;//对齐方式
    int width;
    int height;
    struct _IplROI* roi;
    struct _IplImage* maskROI;
    void* imageld;
    struct _IplTileInfo* tileInfo;
    int imageSize;
    char* imageData;
    int widthStep;
    int BorderMode[4];
    int BorderConst[4];
    char* imageDataOrigin;
}IplImage;
  • CvArr
//定义不明确的数组
typedef void CvArr;

数组操作

初始化

  • CreateImage
//创建图像头,并分配数据
IplImage* cvCreateImage(CvSize size,int depth,int channels);
  • CreateImageHeader
//分配和初始化图像头,并且返回指向IplImage结构的指针
IplImage* cvCreateImageHeader(CvSize size,int depth,int channels);
  • ReleaseImageHeader
cvReleaseImageHeader(IplImage** image);
  • ReleaseImage
//释放头和数据
cvReleaseImage(IplImage** image);
  • InitImageHeader
//初始化并返回指针
IplImage* cvInitImageHeader(IplImage* image,CvSize size,int depth,int channels,int origin=0,int align=4);
//origin取值IPL_ORIGIN_TL或IPL_ORIGIN_BL
//align表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值