http://blog.csdn.net/xiaowei_cqu/article/details/7557063从这里转来的,她的讲解都很详细的~
开始他的文章转载之前,先加点里面重要地方的说明~
depth和nChannels
depth代表颜色深度,使用的是以下定义的宏,nChannels是通道数,为1,2,3或4。
depth的宏定义:
IPL_DEPTH_8U,无符号8bit整数(8u)
IPL_DEPTH_8S,有符号8bit整数(8s)
IPL_DEPTH_16S,有符号16bit整数(16s)
IPL_DEPTH_32S,有符号32bit整数(32s)
IPL_DEPTH_32F,32bit浮点数,单精度(32f)
IPL_DEPTH_64F,64bit浮点数,双精度(64f)
(注:这里的颜色深度是指单个通道的数据保存为的变量类型,例如RGB24格式的数据,通道数为3,颜色深度为IPL_DEPTH_8U)
char是-128~127,uchar是0~255 所以这里用的是uchar。
彩色图像如果为多通道,排列的顺序为BGR而不是RGB
接下来就开始转载喽~
IplImage是OpenCV中CxCore部分基础的数据结构,用来表示图像,其中Ipl是Intel Image Processing Library的简写。以下是IplImage的结构分析(来自OpenCV中文网站:http://www.opencv.org.cn/index.php/Cxcore%E5%9F%BA%E7%A1%80%E7%BB%93%E6%9E%84#IplImage)
- 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_16U,
- IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F 可支持 */
- char colorModel[4]; /* 被OpenCV忽略 */
- char channelSeq[4]; /* 同上 */
- int dataOrder; /* 0 - 交叉存取颜色通道, 1 - 分开的颜色通道.
- cvCreateImage只能创建交叉存取图像 */
- int origin;