OpenCV学习(八)之OpenCV中IplImage和CvMat图像数据结构
来源:互联网 发布:sql server 连接查询 编辑:程序博客网 时间:2024/05/21 07:03
首先看一下IplImage的数据结构:
IplImage---Image Processing Library_Image
<span style="font-family:Microsoft YaHei;">typedef struct _IplImage{ int nSize; /* IplImage大小 */ int ID; /* 版本 (=0)*/ int nChannels; /* 大多数OpenCV支持1、2、3或4个通道*/ int alphaChannel; /* 被OpenCV忽略*/ int depth; /* 像素的位深度,支持如下格式: IPL_DEPTH_8U、IPL_DEPTH_8S, IPL_DEPTH_16S、IPL_DEPTH_32S、IPL_DEPTH_32F、IPL_DEPTH_64F*/ charcolorModel[4]; /* 被OpenCV忽略*/ charchannelSeq[4]; /* 被OpenCV忽略*/ int dataOrder; /* 0表示交叉存取颜色通道, 1表示分开的颜色通道,只有cvCreateImage可以创建交叉存取图像*/ int origin; /*图像原点位置,0表示顶-左结构(左上角),1表示底-左结构(右下角) */ int align; /* 图像行排列方式(4或者8),被OpenCV忽略,使用widthStep代替*/ int width; /* 图像宽相位数*/ int height; /* 图像高相位数*/ struct_IplROI*roi; /* 图像感兴趣区域,当该值非空时,只对该区域处理*/ struct_IplImage*maskROI; /* 在OpenCV中必须为NULL */ void *imageId; /* 在OpenCV中必须为NULL */ struct_IplTileInfo*tileInfo; /* 在OpenCV中必须为空 */ int imageSize; /* 图像数据大小(在交叉存取格式下imageSize = image->height*image->widthStep) 单位字节)*/ char*imageData; /* 指向排列的图像数据*/ int widthStep; /* 排列的图像行大小,单位字节 */ int BorderMode[4]; /* 被OpenCV忽略*/ int BorderConst[4]; /* 被OpenCV忽略*/ char*imageDataOrigin; /* 指针指向一个不同的图像数据结构(不是必须排列的) 是为了纠正图像内存分配准备的 */}IplImage;</span>
</pre><pre name="code" class="cpp"><span style="font-family:Microsoft YaHei;">typedef struct CvMat{int type;/*创建的图像元素类型(uchar,short,int,float,double)*/int step;/*每一行长度,以byte记算*/int* refcount;/*指针的引用计数器; 阵列指向用户分配的数据时,指针为 NULL*/union{uchar* ptr;/*Data pointer for an unsigned char matrices*/short* s;/* Data pointer for a short matrices*/int* i;/* Data pointer for an integer matrices */float* f;/* Data pointer for a float matrices */double* db;/* Data pointer for a double matrices */}data;/*Data pointer*/union{int rows;int height; };union{int cols;int width; };}CvMat;</span>
解释一下OpenCV中图像通道数的问题:
1通道: 灰度图;
3通道: 比如常见彩色图像RGB,各占一个通道;
4通道:在OpenCV中,有时采用四通道,主要是RGB+A(Alpha) ,表示透明度(Transparency);
2通道:2通道图像不常见,通常在程序处理中会用到,如傅里叶变换,可能会用到,一个通道为实数,一个通道为虚数,主要是编程方便。 还有一种情况就是16位图像,本来是3通道,但是为了减少数据量,压缩为16位,刚好两个通道,常见格式有RGB555或RGB565,也就是说R占5位,G占5或6位,B占5位,也有RGBA5551格式。还有就是目前常见的一些摄像头喜欢采用YUV2等格式,格式如下YUYV,在处理的时候可以用4通道或者2通道来处理。 如原格式为:Y1UY2V,插值成为Y1UV,Y2UV 就成两个彩色点了。
YCrCb也有类似压缩情况。
YCrCb也有类似压缩情况。
0 0
- OpenCV学习(八)之OpenCV中IplImage和CvMat图像数据结构
- OpenCV中的三种图像数据结构CvMat,IplImage和Mat(一)CvMat
- OpenCV中的三种图像数据结构CvMat, IplImage和Mat(二)IplImage
- 【学习OpenCV】Mat、CvMat、IplImage
- opencv学习笔记(八)-IplImage数据结构
- OpenCV常用的图像IplImage和矩阵CvMat操作总结
- opencv中IplImage, CvMat, Mat 数据结构的使用简介
- OpenCV中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage
- OpenCv中cv::Mat和IplImage,CvMat之间的转换
- OpenCv中cv::Mat和IplImage,CvMat之间的转换
- OpenCV中IplImage, CvMat, Mat 的关系和相互转换
- OpenCV中IplImage, CvMat, Mat 基本使用和元素遍历
- OpenCV中IplImage, CvMat, Mat 创建和相互转换
- opencv中Mat、CvMat和IplImage的相互转化
- OpenCv中cv::Mat和IplImage,CvMat之间的转换
- OpenCV中IplImage, CvMat, Mat 基本使用和元素遍历
- OpenCV中Mat、cvMat和IplImage类型转换
- OpenCV中IplImage, CvMat, Mat 基本使用和元素遍历
- [Leetcode]Recover Binary Search Tree
- 学习问题
- 使用TPC-H测试oracle&infobright&postgresql的性能
- Perl 正则分组
- linux shell 不同进制数据转换(二进制,八进制,十六进制,base64)
- OpenCV学习(八)之OpenCV中IplImage和CvMat图像数据结构
- 天声人語 20141201
- java IO相关API探索之Closeable和InputStream接口
- ASP.NET基础
- Java线程(五):JUC包线程同步工具
- 5、黑马程序员-C语言的scanf函数
- 黑马程序员———其他对象(System,DateFormat,Calender,Runtime,Math)
- Java中getResourceAsStream的用法
- SVM的复杂度