[OpenCV] -- IplImage浅析
Email : hahayacoder@gmail.com
在学习OpenCV的工程中经常遇到IplImage,这到底是个东西呢?其实IplImage是一个结构体,IplImage结构来源于Intel的另一个针对图像处理函数库Intel Image Processing Library(Ipl),所以IplImage图像结构体前面有一个Ipl前缀。其实IplImage表示的是一个图像Image。
IplImage结构体的定义如下
typedefstruct_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;