-
Point类
Point可以成为任何类型的点,如浮点型、整型等。Point类的巨大优势在于原生上并没有对它们定义很多操作,但它们可以转换成更广义的类型,在实际程序中使用时,Point类是通过类似于cv::Point2i和cv::Point3f这类别名来实例化的,这些别名的最后一个字母表示构造该点所需要的原语。
直接受Point类支持的操作
- 默认构造函数
cv::Point2i p;
cv::Point3i p;
- 复制构造函数
cv::Point3f p2(p1);
- 值构造函数
cv::Point2i(x0,x1);
cv::Point3d(x0,x1,x2);
- 成员访问
cv::Point p;
p.x
p.y
- 点乘/双精度点乘
float x=p1.dot(p2);
double x =p1.dot(p2);
- 叉乘
p1.cross(p2);
- 判断一个点是否在矩形r内
p.inside(r);
Scalar类
Scalar类支持的操作
- 默认构造函数
cv::Scalar s;
- 复制构造函数
cv::Scalar s2(s1);
- 值构造函数
cv::Scalar s(x0);
cv::Scalar s(x0,x1,x2,x3);
- 元素相乘
s1.mul(s2);
Size类
Size类在实际操作时与Point类相似,而且可以与Point类互相转换。这两者之间的主要区别在于Point类的数据成员是x和y,而size中对应的成员是width和height。
size类直接支持的操作
- 默认构造函数
cv::Size sz;
cv::Size2i sz;
cv::Size2f sz;
- 复制构造函数
cv::Size sz2(sz1);
- 值构造函数
cv::Size2f sz(w,h);
- 成员访问
sz.width;
sz.height;
- 计算面积
sz.area();
Rect类
矩形类包含Point类的成员x和y(矩形左上角)和Size类的成员width和height(代表矩形的大小)
Rect直接支持的操作
- 默认构造函数
cv::Rect r;
- 复制构造函数
cv::Rect r2(r1);
- 值构造函数
cv::Rect(x,y,w,h);
- 由起始点和大小构造
cv::Rect(p,sz);
- 由两个对角构造
cv::Rect(p1,p2);
- 成员访问
r.x;
r.y;
r.width;
r.height;
- 计算面积
r.area();
- 提取左上角
r.tl();
- 提取右下角
r.br();
- 判断点p是否在矩形框r内
r.contains(p);
Rect对象的覆写操作符
- 矩形r1和矩形r2的交集
cv::Rect r3 = r1 & r2;
r1 &= r2;
- 同时包含矩形r1和r2的最小面积矩形
cv::Rect r3 = r1 | r2;
r1 |= r2;
- 平移矩形 x个数量
cv::Rect rx = r + x;
r += x;
RotatedRect类
RotatedRect是以中心为原点,而Rect是以左上角为原点的。
RotatedRect直接支持的操作
- 默认构造函数
cv::RotatedRect rr();
- 复制构造函数
cv::RotatedRect rr2(rr1);
- 从两个点构造
cv::RotatedRect(p1,p2);
- 值构造函数,需要一个点,一个大小和一个角度
cv::RotatedRect rr(p,se,theta);
- 成员访问
rr.center;
rr.size;
rr.angle;
- 返回四个角的列表
rr.points(pts[4]);