Cvpoint系列:
CvPoint指图像中的点
typedefstructCvPoint
{
int x;
int y;
}CvPoint;
cvpoint是结构体Cvpoint的构造函数,他是通过内联函数来实现的!
CV_INLINE CvPoint cvPoint( intx,inty )
{
CvPoint p;
p.x = x;
p.y = y;
return p;
}
CV_INLINE已经被定义为inline关键字。一般来说结构体和他的构造函数都是大小写之分。
如果需要通过class类来实现的话,应该是
Cvpoint::cvpoiny(intx,inty)……
CvPoint2D32f指二维空间32浮点型
CvPoint2D32f(doublex,double y)
typedefstructCvPoint2D32f
{
float x;
float y;
}CvPoint2D32f;
他的实现是:
CV_INLINE CvPoint2D32f cvPoint2D32f(double x,double y )
{
CvPoint2D32f p;
p.x = (float)x;
p.y = (float)y;
return p;
}
CvPoint3D32f指三维空间32位浮点型
typedefstructCvPoint3D32f
{
float x;
float y;
float z;
}
CvPoint3D32f;
CV_INLINE CvPoint3D32f cvPoint3D32f( doublex,doubley,doublez )
{
CvPoint3D32f p;
p.x = (float)x;
p.y = (float)y;
p.z = (float)z;
return p;
}
CvSize系列:
CvSize指图像的尺寸:
typedefstructCvSize
{
int width;
int height;
}CvSize;
CV_INLINE CvSize cvSize( intwidth,intheight )
{
CvSize s;
s.width = width;
s.height =height;
return s;
}
CvSize2D32f图像尺寸为浮点型
typedefstructCvSize2D32f
{
float width;
float height;
}
CvSize2D32f;
CV_INLINE CvSize2D32f cvSize2D32f( doublewidth,doubleheight )
{
CvSize2D32f s;
s.width = (float)width;
s.height = (float)height;
return s;
}
CvRect系列
typedefstructCvRect
{
int x;
int y;
int width;
int height;
}
CvRect;
CV_INLINE CvRect cvRect( intx,inty,intwidth,intheight )
{
CvRect r;
r.x = x;
r.y = y;
r.width = width;
r.height =height;
return r;
}
CvScalar是一个数组,有四个浮点型的变量,分别是B,G,R,alpha四个指值,分别表示黑色,绿色,红色和图像的透明度,有三个构造函数,分别是:
第一个:可以对四个都进行赋值,如果没有赋值完全,那么至少第一个必须有值,其余默认为0
CV_INLINE CvScalar cvScalar( doubleval0,doubleval1CV_DEFAULT(0),
doubleval2CV_DEFAULT(0),doubleval3CV_DEFAULT(0))
{
CvScalar scalar;
scalar.val[0] =val0; scalar.val[1] =val1;
scalar.val[2] =val2; scalar.val[3] =val3;
return scalar;
}
第二个:只对第一个赋值,其余均为0,单通道!
CV_INLINE CvScalar cvRealScalar( doubleval0 )
{
CvScalar scalar;
scalar.val[0] =val0;
scalar.val[1] = scalar.val[2] =scalar.val[3] = 0;
return scalar;
}
第三个:把四个浮点型都赋值为同一个数字
CV_INLINE CvScalar cvScalarAll( doubleval0123 )
{
CvScalar scalar;
scalar.val[0] =val0123;
scalar.val[1] =val0123;
scalar.val[2] =val0123;
scalar.val[3] =val0123;
return scalar;
}
CvArr,CvMat,IplImage他们之间有着继承的关系,这样的话,对于操作函数来说更为方便,不需要去单独在对每个不同的类定义一个操作函数!