学习opencv记录(二)

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他们之间有着继承的关系,这样的话,对于操作函数来说更为方便,不需要去单独在对每个不同的类定义一个操作函数!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值