【opencv10】cv::Point:二维/三维点类

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qiu931110/article/details/85174246

正如我们所知道的,opencv中的数据类型多由模板类进行创建,因此对于点类而言也是如此,支持各种类型如int,float等等的不同数据类型的point。点类的开销相对是很少的,因为该类上并未定义太多操纵,在需要的时候它们可以转化为更为一般的类型,例如固定向量类or固定矩阵类(之后讨论)。主要有两种模板,一种是二维的点,一种是三维的点。

一般通过下面的语句来实例化point对象。

cv::Point2i
cv::Point3f
语句中最后的i,f等所表达的意思为:
b是unsigned character,
s是short integer, 
i是32-bit integer,
f是32-bit floating-point number, 
d是64-bit floating-point number.

下表是一些point类直接支持的操作。

操作 例子(3可以换成2)
默认构造方法 cv::Point3i p;
拷贝构造方法 cv::Point3f p2( p1 );
带初始化值的构造方法 cv::Point3d p( x0, x1, x2 );
转换到固定向量类 (cv::Vec3f) p;
成员访问 p.x; p.y;p.z(2的时候没有z)
点积操作 float x = p1.dot( p2 )
双精度点积操作 double x = p1.ddot( p2 )
矢量积操作 p1.cross( p2 )(只针对3维point)
判断point是否在矩阵r中 p.inside( r )(只针对2维point)

这些类型可以被强制转换成old C类型的CvPoint和CvPoint2D32f。如果一个point类的实例被强制转换成CvPoint,那么该值将被四舍五入。

猜你喜欢

转载自blog.csdn.net/qiu931110/article/details/85174246