OpenCV基本数据类型

CvPoint
基于二维整形坐标轴的点
typedef struct CvPoint
{
int x; /* X 坐标, 通常以 0 为基点 /
int y; /
y 坐标,通常以 0 为基点 /
}
CvPoint;
/
构造函数 /
inline CvPoint cvPoint( int x, int y );
/
从 CvPoint2D32f 类型转换得来 */
inline CvPoint cvPointFrom32f( CvPoint2D32f point );

CvPoint
基于二维整形坐标轴的点
typedef struct CvPoint
{
int x; /* X 坐标, 通常以 0 为基点 /
int y; /
y 坐标,通常以 0 为基点 /
}
CvPoint;
/
构造函数 /
inline CvPoint cvPoint( int x, int y );
/
从 CvPoint2D32f 类型转换得来 /
inline CvPoint cvPointFrom32f( CvPoint2D32f point );
/
构造函数 /
inline CvPoint2D32f cvPoint2D32f( double x, double y );
/
从 CvPoint 转换来 */
inline CvPoint2D32f cvPointTo32f( CvPoint point );

CvPoint3D32f
三维浮点坐标上的点
typedef struct CvPoint3D32f
{
float x; /* x-坐标,通常基于 0 /
float y; /
y-坐标, 通常基于 0*/
float z; /* z-坐标,通常基于 0 /
}
CvPoint3D32f;
/
构造函数 */
inline CvPoint3D32f cvPoint3D32f( double x, double y, double z );

CvPoint2D64f
2D point with double precision floating-point coordinates
typedef struct CvPoint2D64f
{
double x; /* x-坐标,通常基于 0 /
double y; /
y-坐标,通常基于 0 /
}
CvPoint2D64f;
/
构造函数 /
inline CvPoint2D64f cvPoint2D64f( double x, double y );
/
从 CvPoint 转换得来 /
inline CvPoint2D64f cvPointTo64f( CvPoint point );
CvPoint3D64f
3D point with double precision floating-point coordinates
typedef struct CvPoint3D64f
{
double x; /
x-坐标,通常基于 0 /
double y; /
y-坐标,通常基于 0 /
double z; /
z-坐标,通常基于 0 /
}
CvPoint3D64f;
/
构造函数 /
inline CvPoint3D64f cvPoint3D64f( double x, double y, double z );
}
CvPoint3D64f;
/
构造函数 /
inline CvPoint3D64f cvPoint3D64f( double x, double y, double z );
CvSize
矩形框大小,以像素为精度
typedef struct CvSize
{
int width; /
矩形宽 /
int height; /
矩形高 /
}
CvSize;
/
构造函数 /
inline CvSize cvSize( int width, int height );
CvSize2D32f
以低像素精度标量矩形框大小
typedef struct CvSize2D32f
{
float width; /
矩形宽 /
float height; /
矩形高 /
}
CvSize2D32f;
/
构造函数*/
inline CvSize2D32f cvSize2D32f( double width, double height );
CvRect
矩形框的偏移和大小
typedef struct CvRect
{
int x; /* 方形的最左角的 x-坐标 /
int y; /
方形的最上或者最下角的 y-坐标 /
int width; /
/
int height; /
/
}
CvRect;
/
构造函数*/
inline CvRect cvRect( int x, int y, int width, int height );
CvScalar
可存放在 1-, 2-, 3-, 4-TUPLE 类型的捆绑数据的容器
typedef struct CvScalar
{
double val[4]
}
CvScalar;
/* 构造函数:用 val0 初始化 val[0]用 val1 初始化 val[1]等等*/
inline CvScalar cvScalar( double val0, double val1=0,
double val2=0, double val3=0 );
/* 构造函数:用 val0123 初始化 val0123 /
inline CvScalar cvScalarAll( double val0123 );
/
构造函数:用 val0 初始化 val[0],val[1]…val[3]用 0 初始化 /
inline CvScalar cvRealScalar( double val0 );
CvTermCriteria
迭代算法的终止标准
#define CV_TERMCRIT_ITER 1
#define CV_TERMCRIT_NUMBER CV_TERMCRIT_ITER
#define CV_TERMCRIT_EPS 2
typedef struct CvTermCriteria
{
int type; /
CV_TERMCRIT_ITER 和 CV_TERMCRIT_EPS 的联合 /
int max_iter; /
迭代的最大数 /
double epsilon; /
结果的精确性 /
}
CvTermCriteria;
/
构造函数 /
inline CvTermCriteria cvTermCriteria( int type, int max_iter, double
epsilon );
/
检查终止标准并且转换使 type=CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,并且满足
max_iter 和 epsilon 限制条件 /
CvTermCriteria cvCheckTermCriteria( CvTermCriteria criteria,
double default_eps,
int default_max_iters );
CvMat
多通道矩阵
typedef struct CvMat
{
int type; /
CvMat 标识 (CV_MAT_MAGIC_VAL), 元素类型和标记 /
int step; /
以字节为单位的行数据长度*/
int* refcount; /* 数据参考计数 /
union
{
uchar
ptr;
short* s;
int* i;
float* fl;
double* db;
} data; /* data 指针 /
#ifdef __cplusplus
union
{
int rows;
int height;
};
union
{
int cols;
int width;
};
#else
int rows; /
行数 /
int cols; /
列数*/
#endif
} CvMat;
CvMatND
多维、多通道密集数组
typedef struct CvMatND
{
int type; /* CvMatND 标识(CV_MATND_MAGIC_VAL), 元素类型和标号*/
int dims; /* 数组维数 /
int
refcount; /* 数据参考计数 /
union
{
uchar
ptr;
short* s;
int* i;
float* fl;
double* db;
} data; /* data 指针*/
/* 每维的数据结构 (元素号,以字节为单位的元素之间的距离)是配套定义的
/
struct
{
int size;
int step;
}
dim[CV_MAX_DIM];
} CvMatND;
CvSparseMat
多维、多通道稀疏数组
typedef struct CvSparseMat
{
int type; /
CvSparseMat 标识 (CV_SPARSE_MAT_MAGIC_VAL), 元素类型和
标号 /
int dims; /
维数 /
int
refcount; /* 参考数量 - 未用 /
struct CvSet
heap; /* HASH 表节点池 /
void
* hashtable; /* HASH 表:每个入口有一个节点列表,有相同的 “以 HASH
大小为模板的 HASH 值” /
int hashsize; /
HASH 表大小 /
int total; /
稀疏数组的节点数 /
int valoffset; /
数组节点值在字节中的偏移 /
int idxoffset; /
数组节点索引在字节中的偏移 /
int size[CV_MAX_DIM]; /维大小 /
} CvSparseMat;
IplImage
IPL 图像头
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; /
0 - 顶—左结构,
1 - 底—左结构 (Windows bitmaps 风格) /
int align; /
图像行排列 (4 or 8). OpenCV 忽略它,使用
widthStep 代替 /
int width; /
图像宽像素数 /
int height; /
图像高像素数*/
struct _IplROI roi;/ 图像感兴趣区域. 当该值非空只对该区域进行处理
/
struct _IplImage maskROI; / 在 OpenCV 中必须置 NULL /
void imageId; / 同上
/
struct _IplTileInfo tileInfo; /同上/
int imageSize; /
图像数据大小(在交叉存取格式下
imageSize=image->height
image->widthStep),单位字节*/
char imageData; / 指向排列的图像数据 /
int widthStep; /
排列的图像行大小,以字节为单位 /
int BorderMode[4]; /
边际结束模式, 被 OpenCV 忽略 /
int BorderConst[4]; /
同上 /
char imageDataOrigin; / 指针指向一个不同的图像数据结构(不是必须排
列的),是为了纠正图像内存分配准备的 /
}
IplImage;
IplImage 结构来自于 Intel Image Processing Library(是其本身所具有的). OpenCV
只支持其中的一个子集:
• alpha 通道在 OpenCV 中被忽略.
• colorModel 和 channelSeq 被 OpenCV 忽略. OpenCV 颜色转换的 唯一个函数
cvCvtColor 把原图像的颜色空间的目标图像的颜色空间作为一个参数.
• 数据顺序 必须是 IPL_DATA_ORDER_PIXEL (颜色通道是交叉存取), 然面平面图像的被选
择通道可以被处理,就像 COI(感兴趣的通道)被设置过一样.
• 当 widthStep 被用于去接近图像行序列,排列是被 OpenCV 忽略的.
• 不支持 maskROI . 处理 MASK 的函数把他当作一个分离的参数. MASK 在 OpenCV 里是
8-bit, 然而在 IPL 他是 1-bit.
• 名字信息不支持.
• 边际模式和边际常量是不支持的. 每个 OpenCV 函数处理像素的邻近的像素,通常使
用单一的固定代码边际模式.
除了上述限制, OpenCV 处理 ROI 有不同的要求.要求原图像和目标图像的尺寸或 ROI 的尺寸必须
(根据不同的作操,例如 cvPyrDown 目标图像的宽(高)必须等于原图像的宽(高)除 2 ±1)精确
匹配,而 IPL 处理交叉区域,如图像的大小或 ROI 大小可能是完全独立的。
CvArr
不确定数组
typedef void CvArr;
CvArr
仅仅是被用于作函数的参数,用于指示函数接收的数组类型可以不止一个,如
IplImage
, CvMat* 甚至 CvSeq*. 最终的数组类型是在运行时通过分析数组头的前 4
个字节判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值