OpenCV学习之数据类型
来源:互联网 发布:手机破解公司网络限制 编辑:程序博客网 时间:2024/04/30 17:43
1. CvPoint
typedef struct CvPoint
{
int x;
int y;
}
CvPoint;
CvPoint用来描述图像中的像素点。
2. CvSize
typedef struct
{int width;
int height;
}
CvSize;
CvSize用来描述图像的尺寸。
3. CvRect
typedef struct CvRect
{int x;
int y;
int width;
int height;
}
CvRect;
CvRect用来描述图像的一个区域。
4. CvScalar
typedef struct CvScalar
{double val[4];
}
CvScalar;
CvScalar用来描述RGBA值。
所有的数据类型都有个以其名称来定义的构造函数,例如:CvSize,它的构造函数位cvSize,只是首字母是小写的。
5. 矩阵类型CvMat
typedef struct CvMat
{int type;
int step;
/* for internal use only */
int* refcount;
int hdr_refcount;
union
{
uchar* ptr;
short* s;
int* i;
float* fl;
double* db;
} data;
#ifdef __cplusplus
union
{
int rows;
int height;
};
union
{
int cols;
int width;
};
#else
int rows;
int cols;
#endif
}
CvMat;
CvMat结构成员说明:
type:为矩阵元素的类型,像这种形式:CV_<bit_depth>(S|U|F)C<number_of_channels>,例如:CV_8UC1,表示8位无符号一元组。
step:行长度,包含4字节对齐的部分。
data:矩阵数据域指针,因为矩阵元素数据类型可以是任何基本的数据类型,所以它这里采用了个联合体。
rows:矩阵行数。
cols:矩阵列数。
不要以为矩阵是很复杂的东西,它的数据也是连续存储的,只不过它有个rows和cols,相当于有两把尺子,cols这么多表示一行,总共rows行。
6. IplImage
typedef struct _IplImage
{int nSize; /* sizeof(IplImage) */
int ID; /* version (=0)*/
int nChannels; /* Most of OpenCV functions support 1,2,3 or 4 channels */
int alphaChannel; /* Ignored by OpenCV */
int depth; /* Pixel depth in bits: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16S,
IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F are supported. */
char colorModel[4]; /* Ignored by OpenCV */
char channelSeq[4]; /* ditto */
int dataOrder; /* 0 - interleaved color channels, 1 - separate color channels.
cvCreateImage can only create interleaved images */
int origin; /* 0 - top-left origin,
1 - bottom-left origin (Windows bitmaps style). */
int align; /* Alignment of image rows (4 or 8).
OpenCV ignores it and uses widthStep instead. */
int width; /* Image width in pixels. */
int height; /* Image height in pixels. */
struct _IplROI *roi; /* Image ROI. If NULL, the whole image is selected. */
struct _IplImage *maskROI; /* Must be NULL. */
void *imageId; /* " " */
struct _IplTileInfo *tileInfo; /* " " */
int imageSize; /* Image data size in bytes
(==image->height*image->widthStep
in case of interleaved data)*/
char *imageData; /* Pointer to aligned image data. */
int widthStep; /* Size of aligned image row in bytes. */
int BorderMode[4]; /* Ignored by OpenCV. */
int BorderConst[4]; /* Ditto. */
char *imageDataOrigin; /* Pointer to very origin of image data
(not necessarily aligned) -
needed for correct deallocation */
}
IplImage;
IplImage是通常所说的“图像”进行编码的基本结构。遵循面向对象设计思想,IplImage由CvMat派生,CvMat由CvArr派生。在函数原型中会经常看到CvArr*,当它出现时,便可以将CvMat*或IplImage*传递到程序。
重要成员说明:
width:就是经常说的图像像素宽度。
height:图像像素高度。
depth:表示图像像素类型,可以取如下值:
IPL_DEPTH_8U,IPL_DEPTH_8S, IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F和IPL_DEPTH_64F
分别表示8位无符号,8位有符号,16位有符号,32位有符号,32位浮点,64位浮点数。
nchannels:可取值1,2, 3, 4,表示通道数。
origin:有两种取值,IPL_ORIGIN_TL和IPL_ORIGIN_BL,分别设置坐标原点的位置于图像的左上角和左下角。
widthStep:和矩阵的step参数类似。
imageData:数据域指针,这是和矩阵最大的不同,矩阵元素数据可以是任何数据类型,而IplImage是unsigned char类型的,表示的是像素数据。
- OpenCV学习之数据类型
- opencv学习之Mat数据类型
- opencv学习之矩阵数据类型转换convertTo
- 【OpenCV学习笔记】2.1OpenCV基本数据类型
- OpenCV学习笔记 -- 基本数据类型
- OpenCV 学习笔记---基本数据类型
- OpenCV学习之编译OpenCV
- 【OpenCV学习笔记】之二:Mat使用的潜规则----对数据类型敏感
- OpenCV 学习日记(三)--- 常见数据类型
- Oracle学习之数据类型
- 学习Python 之 数据类型
- MySQL学习之数据类型
- c++学习之数据类型
- java学习之数据类型
- java学习之数据类型
- python学习之数据类型
- php学习之数据类型
- Java学习之数据类型
- VB.Net程序打包成可执行的.exe程序
- 分享5个最佳的Javascript日期处理类库
- 分享30个带给你灵感的书法作品
- 第8周任务2
- Q-quote表达式
- OpenCV学习之数据类型
- C常见问题之static
- css中后代元素和子元素的区别
- 排毒食谱,饮食与美容的关系
- 分享一个快速开发动态互动HTML5可视化图形效果的Javascript类库 - Envision.js
- OpenCV学习笔记(四十八)——PCA算法实现core
- Service 的生命周期
- 搜索引擎算法研究专题一:基于页面分块的搜索引擎排序算法改进
- stdafx.cpp(0) : fatal error C1033: cannot open program database ''