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

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
IplImage, CvMat, Mat 的关系和相互转换 (转载) opencv 中常见的与图像操作有关的数据容器有Mat,cvMat 和IplImage,这三种类型都可以 代表和显示图像,但是,Mat 类型侧重于计算,数学性较高,openCV 对Mat 类型的计算也 进行了优化。而CvMat 和IplImage 类型更侧重于“图像”,opencv 对其中的图像操作(缩放、 单通道提取、图像阈值操作等)进行了优化。在opencv2.0 之前,opencv 是完全用C 实现的, 但是,IplImage 类型与CvMat 类型的关系类似于面向对象中的继承关系。实际上,CvMat 之 上还有一个更抽象的基类CvArr,这在源代码中会常见。 1. IplImage opencv 中的图像信息头,该结构体定义: View Code typedef struct _IplImage { int nSize; int ID; int nChannels; int alphaChannel; int depth; char colorModel[4]; char channelSeq[4]; int dataOrder; int origin; int align; int width; int height; struct _IplROI *roi; struct _IplImage *maskROI; void *imageId; struct _IplTileInfo *tileInfo; int imageSize; char *imageData; int widthStep; int BorderMode[4]; int BorderConst[4]; char *imageDataOrigin; } IplImage; dataOrder 中的两个取值:交叉存取颜色通道是颜色数据排列将会是BGRBGR...的交错排列。 分开的颜色通道是有几个颜色通道就分几个颜色平面存储。roi 是 IplROI 结构体,该结构体 包含了xOffset,yOffset,height,width,coi 成员变量,其中xOffset,yOffset 是x,y 坐标,coi 代表 channel of interest(感兴趣的通道),非0 的时候才有效。访问图像中的数据元素,分间接存 储和直接存储,当图像元素为浮点型时,(uchar *) 改为 (float *): View Code IplImage* img=cvLoadImage(lena.jpg, 1); CvScalar s; s=cvGet2D(img,i,j); cvSet2D(img,i,j,s); IplImage* img; //malloc memory by cvLoadImage or cvCreateImage for(int row = 0; row img-height; row++) { for (int col = 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; //malloc memory by cvLoadImage or cvCreateImage uchar b, g, r; // 3 channels for(int row = 0; row img-height; row++) { for (int col = 0; col img-width; col++) { b = ((uchar *)(img-imageData + row * img-widthStep))[col * img-nChannels + 0]; g = ((uchar *)(img-imageData + row * img-widthStep))[col *

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档