opencv学习中——CvPoint、CvSize、CvRect、CV_RGB、cvRectangle

(1) CvPoint:表示一个坐标为整数的二维点,是一个包含int类型成员x和y的简单结构体。
typedef  struct  CvPoint
{
    int x;//图像中点的x坐标
    int y;//图像中点的y坐标
}CvPoint;
以后可以直接用CvPoint来命名变量,每个变量包含两个数据坐标。
/* 构造函数 */
inline CvPoint cvPoint( int x, int y );
变体类型:
CvPoint2D32f   //float x,y  二维空间中的点
CvPoint2D64f  //double类型
CvPoint3D32f //float x, y, z 三维空间中的点
CvPoint3D64f   //double类型
类型转换:
将整形数据转换为浮点型数据:
inline CvPoint2D32f cvPointTo32f(CvPoint point )
将浮点型数据转换为整形数据:
inline CvPoint cvPointFrom32f(CvPoint2D32f point)
cvRound
原型:int cvRound (double value)
作用:对一个double型的数进行四舍五入,并返回一个整型数!
函数cvRound,cvFloor,cvCeil用一种舍入方法将输入浮点数转换成整数。
cvRound 返回和参数最接近的整数值。
cvFloor 返回不大于参数的最大整数值。
cvCeil 返回不小于参数的最小整数值。在某些体系结构中该函数 工作起来比标准C操作起来还要快。
(2) CvSize:表示矩阵框大小,以像素为精度。与CvPoint结构类似,但数据成员是integer类型的width和height。
typedef struct
{
    int width;/* 矩形宽 */
    int height; /* 矩形高 */
}CvSize;
inline CvSize cvSize( int width, int height )
变体类型:CvSize2D32f  表示浮点型数据
(3)CvRect:通过方形左上角坐标和方形的高和宽来确定一个矩形区域
typedef struct CvRect   
{   
int x; /* 方形的左上角的x-坐标 */   
int y; /* 方形的左上角的y-坐标*/   
int width; /* 宽 */   
int height; /* 高 */   
}//包含4个成员元素,其中x,y用来确定区域左上角的坐标,width和height确定区域大小。全都是整型数据。
CvScalar:可以用来存放4double数值的数组;一般用来存放像素值(不一定是灰度值)的,最多可以存放4个通道的。
inline CvScalar cvScalar(double val0,double val1 CV_DEFAULT(0),
double val2 CV_DEFAULT(0), double val3 CV_DEFAULT(0))
{
CvScalar scalar;
scalar.val[0] = val0; 
scalar.val[1] = val1;
scalar.val[2] = val2; 
scalar.val[3] = val3;
return scalar;
}
cvScalar包含4double类型的数值,分别是val[0],val[1],val[2]和val[3]。
下面有4个cvScalar类型的函数:
1. inline CvScalar cvScalar(double val0, double val1=0,double val2=0, double val3=0);//最通用的,可初始化0-4个通道
举例:
a) 存放单通道图像中像素:cvScalar(255);
b) 存放三通道图像中像素:cvScalar(255,255,255);
2. inline CvScalar cvRealScalar( double val0 );
//只使用第一个通道,val=val0;等同于cvScalar(val0,0,0,0);
3. inline CvScalar cvScalarAll( double val0123 );//所用通道值用同一个val0123赋值
4. CV_RGB
CV_RGB是OPENCV中的一个宏,用于创建一个色彩值:
#define CV_RGB(r,g,b) cvScalar((b),(g),(r),0)。
看到转换为cvScalar时,rgb的顺序变为bgr,这是因为opencv中存储RGB模式彩图时,采用的通道顺序是BGR.
两个变体类型:
cvRealScalar的意义是:只使用1个val[0]的值,其他3个值全部默认为0。
cvScalarAll的意义是:全部值都设置为val0123。
(5)cvRectangle:通过对角线上的两个顶点绘制简单、指定粗细或者带填充的矩形
函数原型:
void cvRectangle( CvArr*img, CvPoint pt1, CvPoint pt2,CvScalar color,int thickness=1, int line_type=8, int shift=0 );
参数介绍:
img -- 图像.
pt1 -- 矩形的一个顶点。
pt2 -- 矩形对角线上的另一个顶点
color -- 线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image)。
thickness -- 组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。
line_type -- 线条的类型。见cvLine的描述
shift -- 坐标点的小数点位数。




你可能感兴趣的:(opencv学习之路)