opencv常用函数及数据结构_第1页
opencv常用函数及数据结构_第2页
opencv常用函数及数据结构_第3页
opencv常用函数及数据结构_第4页
opencv常用函数及数据结构_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

cvCreateImage创建头并分配数据IplImage*cvCreateImage(CvSizesize,intdepth,intchannels);Size:图像宽、高.Depth:图像元素的位深度,可以是下面的其中之一:IPL_DEPTH_8U-无符号8位整型IPL_DEPTH_8S-有符号8位整型IPL_DEPTH_16U-无符号16位整型IPL_DEPTH_16S-有符号16位整型IPL_DEPTH_32S-有符号32位整型IPL_DEPTH_32F-单精度浮点数IPL_DEPTH_64F-双精度浮点数channels:每个元素(像素)通道号.可以是1,2,3或4.通道是交叉存取的,例如通常的彩色图像数据排列是:b0g0r0b1g1r1...虽然通常IPL图象格式可以存贮非交叉存取的图像,并且一些OpenCV也能处理他,但是这个函数只能创建交叉存取图像.CvSize基本数据类型之一。表示矩阵框大小,以像素为精度。与CvPoint结构类似,但数据成员是integer类型的width和height。typedefstructCvSize{intwidth;/*矩形宽*/intheight;/*矩形高*/}CvSize;width:矩形宽height:矩形高cvResize图像大小变换VoidcvResize(constCvArr*src,CvArr*dst,intinterpolation=CV_INTER_LINEAR);Src:输入图像.Dst:输出图像.Interpolation:插值方法:CV_INTER_NN-最近邻插值,CV_INTER_LINEAR-双线性插值(缺省使用)CV_INTER_AREA-使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于CV_INTER_NN方法..CV_INTER_CUBIC-立方插值.函数cvResize将图像src改变尺寸得到与dst同样大小。若设定ROI,函数将按常规支持ROI.cvSoomth各种方法的图像平滑voidcvSmooth(constCvArr*src,CvArr*dst,intsmoothtype=CV_GAUSSIAN,intparam1=3,intparam2=0,doubleparam3=0,doubleparam4=0);src:输入图像.Dst:输出图像.Smoothtype:平滑方法.CV_BLUR_NO_SCALE(简单不带尺度变换的模糊)-对每个象素的param1×param2领域求和。如果邻域大小是变化的,可以事先利用函数cvIntegral计算积分图像。CV_BLUR(simpleblur)-对每个象素param1×param2邻域求和并做尺度变换1/(param1•param2).CV_GAUSSIAN(gaussianblur)-对图像进行核大小为param1×param2的高斯卷积CV_MEDIAN(medianblur)-对图像进行核大小为param1×param1的中值滤波(i.e.邻域是方的).CV_BILATERAL(双向滤波)-应用双向3x3滤波,彩色sigma=param1,空间sigma=param2.param1:平滑操作的第一个参数.param2:平滑操作的第二个参数.对于简单/非尺度变换的高斯模糊的情况,如果param2的值为零,则表示其被设定为param1。param3:对应高斯参数的Gaussiansigma(标准差).如果为零,则标准差由下面的核尺寸计算:sigma=(n/2-1)*0.3+0.8,其中n=param1对应水平核,n=param2对应垂直核.详情请参照opencv中文参考手册cvReleaseImage释放图像数据voidcvReleaseImage(IplImage**image);image:双指针指向图像内存分配单元。//IplImage*img=cvCreateImage(cvSize(640,480),IPL_DEPTH_8U,1);//cvReleaseImage(&img);cvGetSize返回矩阵或图像ROI的大小(ROI:regionofinterest感兴趣区域)CvSizecvGetSize(constCvArr*arr);arr:数组头。即一个地址函数cvGetSize返回图像或矩阵的行数和列数,如果是图像就返回ROI的大小。cvClone制作图像的完整拷贝IplImage*cvCloneImage(constIplImage*image);Image:原图像.函数cvCloneImage制作图像的完整拷贝包括头、ROI和数据cvCvtColor色彩空间转换voidcvCvtColor(constCvArr*src,CvArr*dst,intcode);src:输入的8-bit,16-bit或32-bit单倍精度浮点数影像。dst:输出的8-bit,16-bit或32-bit单倍精度浮点数影像。Code:彩空间转换,通过定义CV_<src_color_space>2<dst_color_space>常数CV_BGR2GRAY:色彩图像转换为灰度图像请参考opencv中文手册P268CvArr*仅作为函数定义的参数使用,表明函数可以接受不同类型的矩阵作为参数,例如:IplImage*,CvMat*甚至是CvSeq*.矩阵的类型通过矩阵头的前4个字节信息来确定cvConvertScale使用线性变换转换数组voidcvConvertScale(constCvArr*src,CvArr*dst,doublescale=1,doubleshift=0);src:输入数组.dst:输出数组scale:比例因子.shift:该加数被加到输入数组元素按比例缩放后得到的元素上dst(I)=src(I)*scale+(shift,shift,...)即若scale=1,shift=0,则输出与输入是同一图像。cvSubcvSub(Ma,Mb,Mc);//Ma-Mb->McCvMemStorageGrowingmemorystoragetypedefstructCvMemStorage{structCvMemBlock*bottom;/*firstallocatedblock*/structCvMemBlock*top;/*thecurrentmemoryblock-topofthestack*/structCvMemStorage*parent;/*borrowsnewblocksfrom*/intblock_size;/*blocksize*/intfree_space;/*freespaceinthetopblock(inbytes)*/}CvMemStorage;内存存储器是一个可用来存储诸如序列,轮廓,图形,子划分等动态增长数据结构的底层结构。它是由一系列以同等大小的内存块构成,呈列表型---bottom域指的是列首,top域指的是当前指向的块但未必是列尾.在bottom和top之间所有的块(包括bottom,不包括top)被完全占据了空间;在top和列尾之间所有的块(包括块尾,不包括top)则是空的;而top块本身则被占据了部分空间--free_space指的是top块剩余的空字节数。CvSeq可动态增长元素序列Growablesequenceofelements见P109SeqPopFront删除序列的头部元素voidcvSeqPopFront(CvSeq*seq,void*element=NULL);seq:序列element:可选参数。如果该指针不为空,就拷贝被删除元素到指针指向的位置。函数cvSeqPopFront删除序列的头部元素。如果序列已经为空,就报告一错误。函数时间复杂度为O(1).cvCreateSeq创建一序列 CvSeq*cvCreateSeq(intseq_flags,intheader_size,intelem_size,CvMemStorage*storage);seq_flags:序列的符号标志。如果序列不会被传递给任何使用特定序列的函数,那么将它设为0,否则从预定义的序列类型中选择一合适的类型。header_size:序列头部的大小;必须大于或等于sizeof(CvSeq).如果制定了类型或它的扩展名,则此类型必须适合基类的头部大小。elem_size:元素的大小,以字节计。这个大小必须与序列类型相一致。例如,对于一个点的序列,元素类型CV_SEQ_ELTYPE_POINT应当被指定,参数elem_size必须等同于sizeof(CvPoint).函数cvCreateSeq创建一序列并且返回指向该序列的指针。函数在存储块中分配序列的头部作为一个连续躯体,并且设置结构的flags域,elem_size域,header_size域和storage域的值为被传递过来的值,设置delta_elems为默认值(可通过函数cvSetSeqBlockSize重新对其赋值),清空其他的头部域,包括前sizeof(CvSeq)个字节的空间。cvSeqPush添加元素到序列的尾部char*cvSeqPush(CvSeq*seq,void*element=NULL);seq:块element:添加的元素函数cvSeqPush在序列块的尾部添加一元素并返回指向该元素得指针。如果输入参数为null,函数就仅仅分配一空间,留给下一个元素使用。代码说明如何使用该函数去创建一空间请见P112。GetSeqElem返回索引所指定的元素指针char*cvGetSeqElem(constCvSeq*seq,intindex);#defineCV_GET_SEQ_ELEM(TYPE,seq,index)(TYPE*)cvGetSeqElem((CvSeq*)(seq),(index))Seq:序列Index:索引函数cvGetSeqElem查找序列中索引所指定的元素,并返回指向该元素的指针。如果元素不存在,则返回0。函数支持负数,即:-1代表序列的最后一个元素,-2代表最后第二个元素,等。如果序列只包含一个块,或者所需的元素在第一个块中,那么应当使用宏。见下18CV_GET_SEQ_ELEM返回索引所指定的元素指针如果序列只包含一个块,或者所需的元素在第一个块中,那么应当使用宏,CV_GET_SEQ_ELEM(elemType,seq,index)宏中的参数elemType:是序列中元素的类型(如:CvPoint),seq:表示序列index:代表所需元素的索引。该宏首先核查所需的元素是否属于第一个块,如果是,则返回该元素,否则,该宏就调用主函数GetSeqElem.如果索引为负数的话,则总是调用函数cvGetSeqElem。函数的时间复杂度为O(1),假设块的大小要比元素的数量要小。Round,Floor,Ceil转换浮点数为整数 intcvRound(doublev

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论