一、Ipllmage 结构体
typedef struct Ipllmage {
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 _Ipllmage* maskROI;
void * imageld;
struct _IplTileInfo* tilelnfo;
int imageSi ze;
char * imageData;
int widthStep;
int BorderMode[4];
int BorderConst[4];
char* imageDataOrigin;
} Ipllmage;
二、OpenCV图像类型
宏 图像像素类型
IPL_DEPTH_8U 无符号8位整数(8u)
IPL_ DEPTH_8S 有符号8位整数(8s)
IPL_DEPTH_16S 有符号16位整数(16s)
IPL_DEPTH_32S 有符号32位整数(32s)
IPL_DEPTH_32F 32位浮点数单精度(32f)
IPL_DEPTH_64F 64位浮点数双精度(64f)
三、origin和dataOrder
origin变量可以有两种取值:IPL_ORIGIN_TL或者IPL_ORIGIN_BL,分别设置坐标原点的位置于图像的左上角或者左下角。在计算机视觉领域,一个重要的错误来源就是原点位置的定义不统一。具体而言,图像的来源、操作系统、编解码器和存储格式等因素都可以影响图像坐标原点的选取。
dataOrder 的取值可以是IPL_DATA_ORDER_PIXEL或IPL_DATA_ORDER_PLANE,前者指明数据是将像素点不同通道的值交错排在一起(这是常用的交错排列方式),后者是把所有像素同通道值排在一起,形成通道平面,再把平面排列起来。
四、感兴趣的区域(ROI)
实际上它是另一个IPL/IPP 结构IplROI 的实例。IplROI 包含 xOffset, yOf fset, height, width fO coi 成员变量,其中COI代表channel of interest(感兴趣的通道)。ROI的思舉是:一且设定ROI,通常作用于整幅图像的函数便会只对ROI所表示的子图像进行操作。如果Ipllmage变量中设置了ROI,则所有的OpenCV函数就会使用该ROI变量。如果COI被设置成非0值,则对该图像的操作就只作用于被指定的通道上了。不幸的是,许多OpenCV函数都忽略参数COI。