OpenCV学习笔记 -- IplImage数据结构
2012-02-14 17:06
429 查看
IplImage数据结构
Typedef struct _IplImage {
int nSize; int ID; int nChannels;//取值可以是1、2、3、4
int alphaChannels; int depth;//深度值参看下表
char colorModel[4];
char channelSeq[4];
int dataOrder;//IPL_DATA_ORDER_PIXEL(指明数据是将像素点不同通道的值交错排在一起(这是常用的交错排列
式)),IPL_DATA_ORDER_PLANE(把所有像素同通道值排在一起,形成通道平面,再把平面排列起来)
int origin;//IPL_ORIGIN_TL,IPL_ORIGIN_BL分别表示原点位置在图像左上角或左下角
int align;
int width;
int height;
struct _IplROI* roi;
struct _IplImage* maskROI;
void* imageId;
struct _IplTileInfo* tileInfo;
int imageSize;
char* imageData;//包含一个指向第一行图像数据的指针
int widthStep;//同CvMat中Step,包括相邻行的同列点之间的字节数
int BorderMode[4];
int BorderConst[4];
char* imageDataOrigin; }
注意: depth取值:
dataOrder取值:实际上OpenCV只支持IPL_DATA_ORDER_PIXEL struct _IplROI* roi;
访问图像数据例:
//最大化HSV图像中的“s”“v”部分
void saturate_sv(IplImage* img)
{
for(int y=0;yheight;y++)
uchar* ptr = (uchar*)(img->imageData+y*img->widthStep);
for(int x=0;xwidth;x++)
{ ptr[x*3+1]=255; ptr[x*3+2]=255;}
}
注意:参照代码//累加一个三通道矩阵中的所有元素。
IplImage和CvMat的重要区别在于imageData。
IplImage中的imageData是uchar*,即字节类型指针。
在图像上进行指针运算时可以简单的增加widthStep(也是以字节为单位),不用关心实际的数据类型。
但是CvMat的data是联合类型,使用时必须说明指针类型data.ptr。
Typedef struct _IplImage {
int nSize; int ID; int nChannels;//取值可以是1、2、3、4
int alphaChannels; int depth;//深度值参看下表
char colorModel[4];
char channelSeq[4];
int dataOrder;//IPL_DATA_ORDER_PIXEL(指明数据是将像素点不同通道的值交错排在一起(这是常用的交错排列
式)),IPL_DATA_ORDER_PLANE(把所有像素同通道值排在一起,形成通道平面,再把平面排列起来)
int origin;//IPL_ORIGIN_TL,IPL_ORIGIN_BL分别表示原点位置在图像左上角或左下角
int align;
int width;
int height;
struct _IplROI* roi;
struct _IplImage* maskROI;
void* imageId;
struct _IplTileInfo* tileInfo;
int imageSize;
char* imageData;//包含一个指向第一行图像数据的指针
int widthStep;//同CvMat中Step,包括相邻行的同列点之间的字节数
int BorderMode[4];
int BorderConst[4];
char* imageDataOrigin; }
注意: depth取值:
dataOrder取值:实际上OpenCV只支持IPL_DATA_ORDER_PIXEL struct _IplROI* roi;
访问图像数据例:
//最大化HSV图像中的“s”“v”部分
void saturate_sv(IplImage* img)
{
for(int y=0;yheight;y++)
uchar* ptr = (uchar*)(img->imageData+y*img->widthStep);
for(int x=0;xwidth;x++)
{ ptr[x*3+1]=255; ptr[x*3+2]=255;}
}
注意:参照代码//累加一个三通道矩阵中的所有元素。
IplImage和CvMat的重要区别在于imageData。
IplImage中的imageData是uchar*,即字节类型指针。
在图像上进行指针运算时可以简单的增加widthStep(也是以字节为单位),不用关心实际的数据类型。
但是CvMat的data是联合类型,使用时必须说明指针类型data.ptr。
相关文章推荐
- OpenCV学习笔记(二)—IplImage数据结构
- OpenCv2 学习笔记(3) Mat、CvMat和IplImage的相互转化
- OpenCv基础学习笔记之一[types_c.h][IplImage]
- openCv学习笔记(三)——openCv数据结构之间的转换
- opencv学习笔记(八)IplImage* 访问图像像素的值
- OpenCV学习笔记----------OpenCV数据结构Mat详解
- opencv学习笔记(一)IplImage, CvMat, Mat 的关系
- OpenCV学习笔记(1):openCV的数据结构与像素的访问
- OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解
- OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解
- OpenCV学习笔记(08):OpenCV3.2版本下的Mat和IplImage相互转换
- OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解
- opencv学习笔记之三 IplImage结构体
- OpenCV学习笔记——数据结构Mat详解
- OpenCV学习笔记(四)——新版本的数据结构core
- openCv学习笔记(三)——openCv数据结构之间的转换
- OpenCV学习笔记(四)——新版本的数据结构core
- OpenCV学习笔记(三十九)——再谈OpenCV的数据结构,Mat是如此强大
- OpenCV学习笔记(四)——新版本的数据结构core