您的位置:首页 > 运维架构

学习opencv(一)——扒一扒opencv中的一些基本数据类型

2015-10-11 18:02 429 查看
今天来扒一扒opencv中的一些基本数据类型。一直看的是《学习opencv》这本书,想扒出cxtypes.h文件看看每一个函数类型,但是在opencv2.4.10中并没有找到,所以博主翻了翻找到了opencv\build\include\opencv2\core\types_c.h这个文件,里面就是一些数据类型啦~!(以下opencv简称cv)

我们从最简单的开始:

1.Cvpoint

我们先来看看cv怎么写的:

typedef struct CvPoint
{
int x;
int y;
}
CvPoint;


Cvpoint是一个包含integer类型的成员x,y的简单结构体,也就是一个有序整数对,比如说我们可以用CvPoint来表示一个点的坐标。

紧接着CvPoint类型,我们给出了一个用整数x,y创建CvPoint类型变量的函数cvpoint(注意它们的大小写不同):

CV_INLINE  CvPoint  cvPoint( int x, int y )
{
CvPoint p;//首先创建CvPoint类型变量p

p.x = x;
p.y = y;//为p的成员变量赋值

return p;//返回p
}


此函数的使用方式为:

Cvpoint p=cvpoint(1,2); //创建一个CvPoint型变量,p.x=1,p.y=2;


2.CvPoint的两个变种:CvPoint2D32f和CvPoint3D32f:

CvPoint2D32f

typedef struct CvPoint2D32f//
{
float x;
float y;
}
CvPoint2D32f;


由它可以引申出一些函数:

a.cvPoint2D32f:类似cvpointcvPoint2D32f(double,double)函数,其功能是返回一个CvPoint2D32f类型的变量,用法与cvpoint相似,不在赘述。

b.cvPointTo32f

CV_INLINE  CvPoint2D32f  cvPointTo32f( CvPoint point )
{
return cvPoint2D32f( (float)point.x, (float)point.y );
}


这个函数的功能是把Cvpoint类型的变量转化为cvPoint2D32f类型的变量,其原理就是将int型的成员变量强制转换为float型。

c.cvPointFrom32f

CV_INLINE  CvPoint  cvPointFrom32f( CvPoint2D32f point )
{
CvPoint ipt;
ipt.x = cvRound(point.x);
ipt.y = cvRound(point.y);
//cvRound函数:对一个double型的数进行四舍五入,并返回一个整型数
return ipt;
}


其功能与cvPointTo32f的功能相反:即将CvPoint2D32f型变量转换为CvPoint型,其原理就是把成员变量四舍五入。

CvPoint3D32f

typedef struct CvPoint3D32f
{
float x;
float y;
float z;
}
CvPoint3D32f;


CvPoint3D32f类型有三个成员变量,其他与CvPoint2D32f完全相同,形象的理解:CvPoint2D32f可以表示平面上的点的坐标,CvPoint3D32f可以表示三维空间中的点的坐标。

总结:

变量类型成员变量
Cvpointint x,y;
CvPoint2D32ffloat x,y;
CvPoint3D32ffloat x,y,z;
CvPoint2D64fdouble x,y;
CvPoint3D64fdouble x,y,z;
CvSizeint width,height;
CvSize2D32ffloat width, height
CvRectint x, y,width,height
有关CvPoint有关及周边就介绍到这里,不定期更新~

有问题请留言~

2015-10-11 于实验室
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv