IplImage, CvMat, Mat 的关系和相互转换.pdf
上传人:sy****28 上传时间:2024-09-11 格式:PDF 页数:9 大小:353KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

IplImage, CvMat, Mat 的关系和相互转换.pdf

IplImage,CvMat,Mat的关系和相互转换.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

IplImage,CvMat,Mat的关系和相互转换(转载)opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。而CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。在opencv2.0之前,opencv是完全用C实现的,但是,IplImage类型与CvMat类型的关系类似于面向对象中的继承关系。实际上,CvMat之上还有一个更抽象的基类----CvArr,这在源代码中会常见。1.IplImageopencv中的图像信息头,该结构体定义:ViewCodetypedefstruct_IplImage{intnSize;intID;intnChannels;intalphaChannel;intdepth;charcolorModel[4];charchannelSeq[4];intdataOrder;intorigin;intalign;intwidth;intheight;struct_IplROI*roi;struct_IplImage*maskROI;void*imageId;struct_IplTileInfo*tileInfo;intimageSize;char*imageData;intwidthStep;intBorderMode[4];intBorderConst[4];char*imageDataOrigin;}IplImage;dataOrder中的两个取值:交叉存取颜色通道是颜色数据排列将会是BGRBGR...的交错排列。分开的颜色通道是有几个颜色通道就分几个颜色平面存储。roi是IplROI结构体,该结构体包含了xOffset,yOffset,height,width,coi成员变量,其中xOffset,yOffset是x,y坐标,coi代表channelofinterest(感兴趣的通道),非0的时候才有效。访问图像中的数据元素,分间接存储和直接存储,当图像元素为浮点型时,(uchar*)改为(float*):ViewCodeIplImage*img=cvLoadImage("lena.jpg",1);CvScalars;s=cvGet2D(img,i,j);cvSet2D(img,i,j,s);IplImage*img;//mallocmemorybycvLoadImageorcvCreateImagefor(introw=0;row<img->height;row++){for(intcol=0;col<img->width;col++){b=CV_IMAGE_ELEM(img,UCHAR,row,col*img->nChannels+0);g=CV_IMAGE_ELEM(img,UCHAR,row,col*img->nChannels+1);r=CV_IMAGE_ELEM(img,UCHAR,row,col*img->nChannels+2);}}IplImage*img;//mallocmemorybycvLoadImageorcvCreateImageucharb,g,r;//3channelsfor(introw=0;row<img->height;row++){for(intcol=0;col<img->width;col++){b=((uchar*)(img->imageData+row*img->widthStep))[col*img->nChannels+0];g=((uchar*)(img->imageData+row*img->widthStep))[col*img->nChannels+1];r=((uchar*)(img->imageData+row*img->widthStep))[col*img->nChannels+2];}}初始化使用IplImage*,是一个指向结构体IplImage的指针:ViewCodeIplImage*cvLoadImage(constchar*filename,intiscolorCV_DEFAULT(CV_LOAD_IMAGE_COLOR));//loadimagesfromspecifiedimageIplImage*cvCreateImage(CvSizesize,intdepth,intchannels);//allocatememory