opencv中结构体分析

在C中,定义一个结构体为

Struct Date

{

   Int month;

};

Struct Date D1,D2;

若用typedef来定义,则为

(1)

Typedef struct _Date

{

   int month;

}Date;//Date为类型名

(2) Typedef struct         //去掉_Date

{

   int month;

}Date;              //Date为类型名

(1)与(2)相同

若要定义一个结构体变量则为,Date D1,*p;

//定义结构体变量D1和指向结构体的指针变量p;

如果不用typedef,则定义变量比较麻烦,如

Struct  _Date D1,D2;

Struct  _Date *p;

Opencv中IplImage定义为:

typedef struct  _IplImage

   ... ...

IplImage;

用法一:struct_IplImage *src=cvLoadImage("F:\\图片shizi.jpg");

用法二:IplImage*src= cvLoadImage("F:\\图片\\shizi.jpg");

用法一与用法二皆可,显然用法二更方便,也是常用的方法。也体现出了typedef的作用。

上面(1)与(2)相同,但是不知道opencv定义IplImage时为什么加了一个_IplImage.应该有它的道理吧.

 

介绍下对语句的理解

CvSizeSize1=cvSize(320,240);

 

在Opencv中定义为:

 

typedef struct CvSize    //结构体

{

    int width;

    int height;

}

CvSize;

下面是定义的函数,只不过与常用的int或void定义的函数样子不太一样,本质上还是一样的。

# define CV_INLINEinline

CV_INLINE  CvSize cvSize( int width, int height ) //定义函数

{

    CvSize s;

 

    s.width = width;

    s.height = height;

 

    return s;

}

 

分析,CV_INLINE CvSize  cvSize( int width, intheight )

CV_INLINE是内置函数的意思,由# define CV_INLINE inline

可知。

CvSize  cvSize( int width, int height )与我们常定义的函数,例如,

Int     max (inta,int b)

外形是一样的,

CvSize是函数返回值的类型,根据上面的定义

typedef structCvSize

{

    int width;

    int height;

}

CvSize;

知,CvSize是结构体类型名,与int地位一样。而cvSize是定义的函数名,即对应max。

因为大学时学习不认真,以至于基础太差,这一句CV_INLINE  CvSize cvSize( int width, int height ) //定义函数

是今天才知道的,以前都没想到这样也可以。

上面的结构体定义是c中的,c++的是另一种定义方式。

上面是一点理解,菜鸟难免有错,欢迎指出!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值