opencv学习之数据结构与数据操作
来源:互联网 发布:php问答系统下载 编辑:程序博客网 时间:2024/06/05 22:48
基础结构
- 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 2typedef 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表示图像行排列,4或8字节
- CloneImage
//备份图像IplImage* cvCloneImage(const IplImage* image);
- SetImageCOI
//基于给定值设置感兴趣的通道//0表示所有,1表示第一个,2表示第二个等等cvSetImageCOI(IplImage* image,int coi);
- GetImageCOI
//返回感兴趣的通道,所有通道被选中,返回0cvGetImageCOI(const IplImage* image);
- SetImageROI
//基于给定的矩形设置图像的ROI(感兴趣区域)cvSetImageROI(IplImage* image,CvRect rect);
- ResetImageROI
//释放ROI//释放后图像被全部选中cvResetImageROI(IplImage* image);
- GetImageROI
//返回图像的ROI坐标CvRect cvGetImageROI(const IplImage* image);
- CreateMat
//为新矩阵分配头和数据,并返回指向矩阵的指针//type为矩阵类型CV_(bit_depth)(S|U|F)C(number_of_channels)CvMat* cvCreatMat(int rows,int cols,int type);
- CreateMatHeader
//分配新的矩阵头,并返回指针CvMat* cvCreatMatHeader(int rows,int cols,int type);
- ReleaseMat
//释放矩阵内存void cvReleaseMat(CvMat** mat);
- InitMatHeader
//初始化矩阵CvMat* cvInitMatHeader(CvMat* mat,int rows,int cols,int type, void* data=NULL,int step = CV_AUTOSTEP);
- Mat
//初始化CvMat cvMat(int rows,int cols,int type,void* data=NULL);
- CloneMat
//备份矩阵CvMat* cvCloneMat(const CvMat* mat);
- CreateMatND
//为多维稠密矩阵分配头和数据,并返回矩阵的指针CvMatND* cvCreateMatND(int dims,const int* sizes,int type);
- CreateMatNDHeader
//分配头给多维稠密矩阵CvMatND* cvCreateMatNDHeader(int dims,const int* sizes,int type);
- ReleaseMatND
//缩减矩阵参考计数并释放矩阵头void cvReleaseMatND(CvMatND** mat);
- InitMatNDHeader
//初始化用户指定的多维矩阵头CvMatND* cvInitMatNDHeader(CvMatND* mat,int dims,const int* sizes,int type,void* data=NULL);
- CloneMatND
CvMatND* cvCloneMatND(const CvMatND* mat);
- DecRefData
//数组数据的引用计数减一//计数为0时删除数据//只有cvCreateData分配时计数才非空void cvDecRefData(CvArr* arr);
- IncRefData
//计数加一int cvIncRefData(CvArr* arr);
- CreateData
//分配图像、矩阵或则多维数组的数据void cvCreateData(CvArr* arr);
- ReleaseData
//释放数组数据void cvReleaseData(CvArr* arr);
- SetData
//指派用户数据的数组头//step表示整行字节长void cvSetData(CvArr* arr,void* data,int step);
- GetRawData
//获得数组的底层信息//step输出行字节长//roi_size输出ROI尺寸void cvGetRawData(const CvArr* arr,uchar** data,int* step=NULL, CvSize* roi_size=NULL);
- GetMat
//从输出的数组返回矩阵头//header结构指针,作为临时缓存CvMat* cvGetMat(const CvArr* arr,CvMat* header,int* coi=NULL, int allowND=0);
- GetImage
//从输出数组获得图像头IplImage* cvGetImage(const CvArr* arr,IplImage* image_header);
- CreateSparseMat
//创建多维稀疏矩阵//size为矩阵每一维的大小CvSparseMat* cvCreateSparseMat(int dims,const int* sizes,int type);
- ReleaseSparseMat
//释放稀疏矩阵void cvReleaseSparseMat(CvSparseMat** mat);
- CloneSparseMat
CvSparseMat* cvCloneSparseMat(conse CvSparseMat* mat);
获取元素和数组子集
- GetSubRect
//根据输入的图像或矩阵的矩阵数组子集返回矩阵头CvMat* cvGetSubRect(const CvArr* arr,CvMat* submat,CvRect rect);
- GetRow,GetRows,GetCol,GetCols
//根据指定的行或行跨度从输入数组中返回对应的矩阵头//submat返回子矩阵头的指针CvMat* cvGetRow(const CvArr* arr,CvMat* submat,int row);CvMat* cvGetRows(const CvArr* arr,CvMat* submat,int start_row, int end_row,int delta_row=1);
- GetDiag
//根据参数diag返回指定的矩阵对角线CvMat* cvGetDiag(const CvArr* arr,CvMat* submat,int diag=0);
- GetSize
//返回行数列数CvSize cvGetSize(const CvArr* arr);
- InitSparseMatIterator
//初始化稀疏矩阵的迭代器,返回第一个元素的指针,矩阵为空返回NULLCvSparseNode* cvInitSparseMatIterator(const CvSparseMat* mat, CvSparseMatIterstor* mat_iterator);
- GetNextSparseNode
//移动迭代器到下一个稀疏矩阵元素并返回指向他的指针CvSparseNode* cvGetNextSparseNode(CvSparseMatIterator* mat_iterator);
- GetElemType
//返回数组元素类型int cvGetElemType(const CvArr* arr);
- GetDims,GetDimSize
//前者返回数组维数及其大小;后者返回数组指定维的大小int cvGetDims(const CvArr* arr,int* sizes=Null);int cvGetDimSize(const CvArr* arr,int index);
- Ptr*D
//返回指向特殊元素的指针uchar* cvPtr1D(const CvArr* arr,int idx0,int* type=Null);uchar* cvPtr2D(const CvArr* arr,int idx0,int idx1;int* type=Null);uchar* cvPtrND(const CvArr* arr,int* idx,int* type=Null, int create_node=1,unsigned* precalc_hashval=Null);
- Get*D
//返回指定数组元素CvScalar cvGet1D(const CvArr* arr,int idx0);CvScalar cvGet2D(const CvArr* arr,int idx0,int idx1);CvScalar cvGetND(const CvArr* arr,int* idx);
- GetReal*D
//返回单通道数组的指定元素double cvGetReal1D(const CvArr* arr,int idx0);double cvGetRealND(const CvArr* arr,int* idx);
- mGet
//返回单通道浮点矩阵指定元素double cvmGet(const CvMat* mat,int row,int col);
- Set*D
//修改指定数组元素的值void cvSet1D(CvArr* arr,int idx0,CvScalar value);void cvSetND(CvArr* arr,int* idx,CvScalar value);
- SetReal*D
//将新值分配给单通道数组的指定元素void cvSetReal1D(CvArr* arr,int idx0,double value);void cvSetRealND(CvArr* arr,int* idx,double value);
- MSet
//为单通道浮点矩阵的指定元素赋值void cvmSet(CvMat* mat,int row,int col,double value);
- ClearND
//清除指定密集型数组的元素或者删除稀疏数组的元素void cvClearND(CvArr* arr,int* idx);
复制和添加
- Copy
//mask为掩码,选取指定区域复制给目标矩阵void cvCopy(const CvArr* src,CvArr* dst,const CvArr* mask=Null);
- Set
//为数组的每个元素设置数值void cvSet(CvArr* arr,CvScalar value,const CvArr* mask=Null);
- SetZero
//置零void cvSetZero(CvArr* arr);
- SetIdentity
//初始化带尺寸的单位矩阵//value为赋值给对角线的值void cvSetIdentity(CvArr* mat,CvSacar value=cvRealScalar(1));
- Range
//用给定范围的数填充矩阵[0,1,2,3,4,5,6]void cvRange(CvArr* mat,double start,double end);
变换和置换
- Reshape
//修改矩阵形状,不复制数据//new_cv新的通道数,new_rows新的行数CvMat* cvReshape(const CvArr* arr,CvMat* header,int new_cn,int new_rows=0);
- ReshapeMatND
//修改多维数组形状,可能复制数据CvArr* cvReshapeMatND(const CvArr* arr,int sizeof_header,CvArr* header, int new_cn,int new_dims,int* new_sizes);
- Repeat
//用输入数组重复的填充输出数组void cvRepeat(const CvArr* src,CvArr* dst);
- Flip
//垂直、水平翻转二维数组//大于0水平翻转,等于0垂直翻转,小于0水平垂直翻转void cvFlip(const CvArr* src,CvArr* dst=Null,int flip_mode=0);
- Split
//将多通道数组分割成几个单通道数组,或者从数组中提取一个通道void cvSplit(const CvArr* src,CvArr* dst0,CvArr* dst1,CvArr* dst2,CvArr* dst3);
- Merge
//由几个单通道数组组合为多通道数组,或插入一个单通道数组void cvMerge(const CvArr* src0,const CvArr* src1,const CvArr* src2, const CvArr* src3,CvArr* dst);
- MixChannels
//将数组的几个通道复制到输出数组指定的通道//改变通道顺序,添加删除alpha通道,抽取通道void cvMixChannels(const CvArr** src,int src_count,CvArr** dst,int dst_count const int* from_to,int pair_count);//==============================================//切分RGBA四通道,生成RGB三通道,交换R\B,丢弃alpha通道CvMat* rgba = cvCreateMat(100,100,CV_8UC4);CvMat* bgr = cvCreateMat(rgba->rows,rgba->cols,CV_8UC3);CvMat* alpha = cvCreateMat(rgba->rows,rgba->cols,CV_8UC1);CvArr* out[]={bgr,alpha};int from_to[] = {0,2,1,1,2,0,3,3};cvSet(rgba,cvScalar(1,2,3,4));cvMixChannles((const CvArr**)&rgba,1,out,2,from_to,4);
- RandShuffle
//随机排布数组内元素void cvRandShuffle(Cvarr* mat,CvRNG* rng,double iter_factor=1);
算术、逻辑和比较运算
- LUT
//使用查表的值填充void cvLUT(Const CvArr* src,CvArr* dst,const CvArr* lut);//dst(i)=lut[src(i)+delta]//CV_8U时delta=0;CV_8S为128
- ConvertScale
//使用线性变换转换数组//按比例默认1缩放,填充shift默认0void cvConvertScale(const CvArr* src,CvArr* dst,double scale=1,double shift=0);
- ConvertScaleAbs
//使用线性变换将输入数组元素转换为8位无符号整数void cvConvertScaleAbs(const CvArr* src,CvArr* dst,double scale=1,double shift=0);
- Add,Sub
//计算两数组每个元素之和,差//mask为掩码,指定相加区域cvAdd(src1,src2,dst,const CvArr* mask=Null);
- AddS,SubS,SubRS
//计算数组与数值之和,差cvAddS(src,num,dst,mask=Null);
- AddWeighted
//两数组加权和//alpha\beta\gamma分别为权值//d=a1*ahpha+a2*beta+gammacvAddWeighted(src1,double alpha,src2,double beta,double gamma,dst);
- Mul,Div
//点乘,除//scale为比例因子cvMul(src1,src2,dst,double scale = 1);//d=a1.*a2*scale
- And,AndS,Or,Ors,Xor,XorS,Not
//逻辑运算cvAnd(src1,src2,dst,mask=Null);
- Cmp,CmpS
//比较两数组之间的关系,以0-1填充dst//cmp_op为CV_CMP_EQ,等于//cmp_op为CV_CMP_GT,a1大于a2//cmp_op为CV_CMP_GE,大于等于//cmp_op为CV_CMP_LT,小于//cmp_op为CV_CMP_LE,小于等于//cmp_op为CV_CMP_NE,不等于cvCmp(src1,src2,dst,int cmp_op);
- InRange,InRangeS
//检查数组元素是否在两个数组之间cvInRange(src,low,up,dst);
- Max,MaxS,Min,MinS
//查找两个数组所以元素的最大值,最小值cvMax(src1,src2,dst);
- AbsDiff,AbsDiffS
//计算两个数组差的绝对值cvAbsDiff(src1,scr2,dst);
统计
- CountNonZero
//返回指定数组中非零元素的个数//arr必须为单通道数组或者设置了COI的多通道图像cvCountNonZero(arr);
- Sum
//计算数组元素之和cvSum(arr);
- Avg
//平均值cvAvg(arr,mask=Null);
- AvgSdv
//平均值,标准差cvAvgSdv(arr,CvScalar* mean,CvScalar* std_dev,const CvArr* mask=Null);
- MinMaxLoc
//查找数组元素中的最大值、最小值,以及他们的位置cvMinMaxLoc(arr,double* min,double* max,CvPiont* min_p=Null,CvPoint* max_p=Null,const CvArr* mask=Null);
- Norm
//计算数组的绝对范数。arr2为Null则为arr1的绝对范数//绝对差分范数//相对差分范数cvNorm(arr1,arr2=Null,type=CV_L2,mask=Null);
- Reduce
//将矩阵转换成向量cvReduce(src,dst,dim,op);//dim为0表示降维为一行,1表示一列,-1为自动选择//op为CV_REDUCE_SUM,输出为所有行/列的和//AVG中值,MAX最大值,MIN最小值
线性代数
- DotProduct
//利用欧几里得准则计算两个数组的点积cvDotProduct(src1,src2);
- CrossProduct
//计算叉积cvCrossProduct(src1,src2,dst);
- Normalize
//按照某种范数或者数字范围归一化矩阵cvNormalize(src,dst,double a=1,double b=0,int type=CV_L2,mask=Null);//a 输出矩阵的最小值、最大值,或者矩阵范数的最小值、最大值//b 输出矩阵的最大值、最小值,或者矩阵范数的最大值、最小值
- ScaleAdd
//计算一个数组缩放后与另一个数组之和cvScaleAdd(src1,CvScalar scale,src2,dst);//scale为缩放因子
- GEMM
//执行通用矩阵乘法cvGEMM(src1,src2,alpha,src3,beta,dst,int tABC=0);//src3为偏移量,可以空//tABC=CV_CEMM_A_T,转置src1,B转置src2,C转置src3
- Transform
//对数组每一个元素执行矩阵变换cvTransform(src,dst,const CvMat* transmat,const CvMat* shiftvec=Null);//transmat变换矩阵,shiftvec可选偏移量
- PerspectiveTransform
//对向量数组进行透视变换cvPerspectiveTransform(src,dst,const CvMat* mat);//mat为3*3或者4*4变换矩阵
- MulTransposed
//数组与其转置的乘积cvMulTransposed(src,dst,order,const CvArr* delta=NULL);//order为乘法顺序
- Trace
//返回矩阵的迹cvTrace(const CvArr* mat);
- Transpose
//转置cvTranspose(src,dst);
- Det
//返回矩阵行列式的值cvDet(const CvArr* mat);
- Invert
//求矩阵的逆矩阵或伪逆矩阵cvInvert(src,dst,CV_LU);//CV_LU高斯消除法//CV_SVD奇异值分解法,src是奇异的时候计算伪逆矩阵//CV_SVD_SYM正定对称矩阵的SVD法
- Solve
//求解线性系统或者最小二乘法问题cvSolve(src1,src2,dst,CV_LU);
- SVD
//对实数浮点数矩阵进行奇异值分解cvSVD(CvArr* A,W,U=null,V=null,int flags=0);//A为输入,W奇异值矩阵//flags为CV_SVD_MODIFY_A,操作修改矩阵A,处理变快//CV_SVD_U_T,返回转置矩阵U,变快//CV_SVD_V_T,返回转置矩阵V,变快
- SVBkSb
//奇异值回代算法back substitutioncvSVBkSb(W,U,V,B,X,flags);//W奇异值矩阵//U左正交矩阵//V右正交矩阵//B可省略//X目标矩阵
- EigenVV
//计算对称矩阵的特征值evals,特征向量evects//速度慢,精确度低。//若已知A是正定的或者协方差矩阵,可以用cvSVD求特征值、特征向量//U=V为特征向量,W为特征值cvEigenVV(A,evects,evals,double eps=0);
- CalcCovarMatrix
//计算输入向量的协方差矩阵和平均向量cvCalcCovarMatrix(const CvArr** A,count,CvArr* out,CvArr* avg,flags);//count为输入向量个数//out为协方差矩阵//flags以不同方式计算协方差
- Mahalanobis
//计算两个向量的马氏距离cvMahalanobis(A,B,C);//C为A、B之间的协方差矩阵的逆矩阵//先计算协方差CalcCovarMatrix在计算逆矩阵Invert
- CalcPCA
//对一系列向量进行主元分析cvCalcPCA(data,avg,e,g,flags);//data 输入数据//avg 平均值向量//e 协方差矩阵的特征值//g 协方差矩阵的特征向量(主元)//flags 保存为行、列向量,使用预先的平均向量
- ProjectPCA
//投影输入向量到正交基(特征向量)表示的子空间上cvProjectPCA(data,avg,g,res);//g 特征向量(主元)//res 分解系数的输出矩阵
- BackProjectPCA
//从投影系数中重构原始向量cvBackProjectPCA(proj,avg,g,res);
数学函数
- Round,Floor,Cell
//舍入方法将浮点数转为整数int cvFloor(double val);//Round四舍五入//Floor返回不大于输入的最大整数//Cell返回不小于输入的最小整数
- Sqrt,InvSqrt,Cbrt,
//计算输入值的平方根,平方根倒数,立方根cvSqrt(double A);
- FastArctan
//计算二维向量(x,y)的全范围角度cvFastArctan(float y,float x);
- IsNaN,IsInf
//判断输入是否为一个数字,是否为无穷大cvIsInf(doubel A);
- CartToPolar
//计算二维向量的长度角度,即直角坐标转极坐标void cvCartToPolar(const CvArr* x,const CvArr* y,CvArr* len,CvArr* angle,int flags=0);//flags默认为弧度制,
- PolarToCart
//计算极坐标对应的直角坐标cvPolarToCart(len,angle,x,y,flags=0);
- Pow
//对数组内的每一个元素求幂cvPow(src,dst,power);//power幂指数
- Exp,Log
//指数幂,绝对值的自然对数cvExp(src,dst);
- SolveCubic
//求解三次曲线函数的实根cvSolveCubic(A,res);//A为等式系数//res为实根
随机数生成
- RNG
//初始化随机数生成器并返回其状态CvRNG cvRNG(int64 seed=-1);
- RandArr
//用均匀分布或正态分布随机矩阵填充数组,并更新RNG状态cvRandArr(CvRNG* rng,CvArr* arr,type,CvScalar p1,CvScalar p2);//arr输出//type为CV_RAND_UNI均匀分布,CV_RAND_NORMAL正态(高斯)//p1 均匀分布的下界,正态分布的均值//p2 均匀分布的上界,正态分布的标准差
- RandInt
//返回均匀分布的随机32位无符号整型值并更新RNG状态cvRandInt(CvRNG* rng);
- RandReal
//返回浮点型随机数并更新RNGcvRandReal(CvRNG* rng);
离散变换
- DFT
//离散傅里叶变换cvDFT(src,dst,flags);//CV_DXT_FORWARD正向一维或二维变换,结果不被缩放//CV_DXT_INVERSE逆向一维二维变换,结果不被缩放//CV_DXT_SCALE对结果进行缩放,即用数组元素除以它//CV_DXT_ROWS对独立的行进行正向逆向变换,高效
- GetOptimalDFTSize
//对于给定的矢量尺寸返回DFT尺寸cvGetOptimalDFTSize(int size0);//返回最小值N,N大于等于size0,从而使得向量的DFT可以按照FFT快速计算
- MulSpectrums
//对两个傅里叶频谱的每个元素进行乘法运算cvMulSpectrums(src1,src2,dst,flags);//CV_DXT_ROWS将数组的每一行视为一个单独的频谱//CV_DXT_MUL_CONJ第二个取共轭
- DCT
//执行一维或者二维浮点数组的离散余弦或者反余弦变换cvDCT(src,dst,flags);//CV_DXT_FORWARD一维或二维余弦变换//CV_DXT_INVERSE一维或二维反余弦变换//CV_DXT_ROWS跟以上组合,减少开销
动态结构
内存储存
数据结构
- CvMemStorage定义动态内存
- CvMemBlock定义存储块结构
- CvMemStoragePos定义内存存储块地址
数据操作
- CreateMemStorage,ClearMemStorage
//创建一内存块并返回指向块首的指针cvCreateMemStorage(int block_size=0);
- CreateChildMemStorage
//创建子内存块cvCreateChildMemStorage(CvMemStorage* parent);
- MemStorageAlloc
//在存储块中分配一内存缓冲cvMemStorageAlloc(CvMemStorage* storage,size_t size);
- MemStorageAllocString
//分配文本字符串cvMemStorageAllocString(CvMemStorage,const char* ptr,int len = -1);
- SaveMemStoragePos
//保存内存块的地址cvSaveMemStoragePos(const CvMemStorage* storage,CvMemStoragePos* pos);
- RestoreMemStoragePos
//恢复内存块的地址cvRestoreMemStoragePos(storage,pos);
序列
数据结构
- CvSeq 定义非固定元素的序列
- CvSlice 对序列分割进行定义
数据操作
集合
数据结构CvSet定义节点的集合
数据操作
- CreateSet 创建空的数据集
- SetAdd 向集合中添加一个元素
- SetRemove 从点集中删除元素
- SetNew 将元素添加到点集中
- SetRemoveByPtr 删除指针指向的集合元素
- GetSetElem 通过索引值查找相应的集合元素
- ClearSet 清空点集
图
数据结构
- CvGraph 定义有向权图和无向权图
- CvGraphScanner 定义图的遍历
数据操作
树
数据结构
- CV_TREE_NODE_FIELDS 用于树节点类型声明的宏
- CvTreeNodeIterator 定义树节点结构如下
数据操作
- InitTreeNodeIterator 初始化树节点的迭代器
- NextTreeNode 待初始化的迭代器
- PrevTreeNode 返回当前节点,并将迭代器移向前一个节点
- TreeToNodeSeq 将所有节点指针收集到线性列表中
- InsertNodeIntoTree 将新节点插入到树中
- RemoveNodeFromTree 从树中删除节点
绘图函数
曲线与形状
数据结构
- CV_RGB创建一个色彩值
数据操作
- Line 绘制连接两点的线段
- Rectangle 通过对角线的两个顶点绘制矩形
- Circle 绘制或填充给定圆心半径的原
- Ellipse 绘制或填充椭圆
- EllipseBox 绘制或者填充椭圆弧或扇形
- FillPoly 填充多边形的内部
- FillConvexPoly 填充多边形的外部
- PolyLine 绘制多角曲线
文本
- InitFont 对字体结构初始化
- PutText 在图像中加入文本
- GetTextSize 获取字符串文本的宽、高度
点集和轮廓
- DrawContours 在图像中绘制轮廓
- InitLineIterator 初始化线段迭代器
- ClipLine 将超出图像范围的线段剪去,只保留图像内部分
- Ellipse2Poly 用折线逼近椭圆弧
数据保存和运行时类型信息
文件存储
数据结构
- CvFileStorage 文件存储器结构
- CvFileNode 定义文件存储器节点
- CvAttrList 定义属性列表
数据操作
- OpenFileStorage 打开文件存储器读、写数据
- ReleaseFileStorage关闭一个相关文件的存储器并释放临时内存
写数据
读数据
运行时类型信息和通用函数
类型信息
- CvTypeInfo 定义类型信息
通用函数
- RegisterType 按照指定的类型信息结构定义一个新类型
- UnregisterType 通过指定名称删除已定义的类型
- FirstType 返回类型列表中的第一个类型
- FindType 通过类型名查找指定类型
- TypeOf 返回指定对象的类型
- Release 查找指定对象的类型,然后使用该类型的release删除该对象
- Clone 复制该对象
- Save 保存对象到文件
- Load 打开对象
其他混合函数
- CheckArr 检查输入数组的每个元素是否为非法值
- KMean2 按照给定的聚类数目拆分向量的集合
- SeqPartition 拆分序列为等效的类
错误处理和系统函数
错误处理
- GetErrStatus 返回当前错误状态
- SetErrStatus 将错误状态设置为指定值
- GetErrMode 返回当前错误模式
- SetErrMode 设置指定的错误模式
- Error 产生一个错误
- ErrorStr 返回指定错误状态编码的原文描述
- RedirectError 设置一个新的错误处理器
- NullDevReport,StdErrReport,GuiBoxReport 提供标准错误操作
系统函数
- Alloc 分配内存缓冲区大小,并返回分配的缓冲区指针
- Free 释放缓冲区
- GetTickCount 返回时钟计数
- GetTickFrequency 返回每个微秒的时钟数
- RegisterModule 添加模块到模块列表
- GetModuleInfo 检索注册模块和插件的信息
- UseOptimized 在优化和不优化两个模式中切换
- SetMemoryMannager 分配自定义/默认内存管理函数
- SetIPLAllocator 切换图像IPL函数的分配/释放
阅读全文
0 0
- opencv学习之数据结构与数据操作
- OpenCV学习之Mat数据按位操作与通道分离合并
- OpenCV学习之矩阵操作
- OpenCV学习之图像操作
- OpenCV学习之形态学操作
- OpenCV学习之形态学操作
- openCV学习之路【2】---OpenCV之数据结构
- opencv学习(1)之基本数据结构
- 数据结构预算法学习-第一章(数据与数据结构)
- opencv学习笔记2--Mat数据操作
- OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co
- OpenCV基本数据结构操作
- OpenCV学习笔记(23)cv.Mat 与 .txt 文件数据的读写操作
- OpenCV学习笔记 cv.Mat 与 .txt 文件数据的读写操作
- OpenCV学习笔记 cv.Mat 与 .txt 文件数据的读写操作
- OpenCV学习笔记 cv.Mat 与 .txt 文件数据的读写操作
- OpenCV学习笔记 cv.Mat 与 .txt 文件数据的读写操作
- OpenCV学习笔记 cv.Mat 与 .txt 文件数据的读写操作
- 动/静态接收系统广播
- Mysql 表设计
- Socket的简单数据传递
- CreateProcessAsUser常用参数说明
- Dinic最大流(bzoj 2756: [SCOI2012]奇怪的游戏)
- opencv学习之数据结构与数据操作
- python Sublime Text3的使用基本配置操作&&SublimeREPL插件的安装及快捷键设置
- JAVA 攻城狮 第三十二天
- Java格式化倒计时的两种方式
- 如何在自己的Android项目中添加扫一扫功能
- POJ 3498 March of the Penguins(枚举+最大流)
- volatile和synchronized的区别
- 静态加载Fragment
- Java集合面试问题和答案