OpenCV中RotatedRect 以及 Rect介绍

最近项目中用到RotatedRect 这里记录一下

1、RotatedRect

//构建一个Mat(200*200)
Mat image(200, 200, CV_8UC3, Scalar(0));  
//设置一个旋转矩形3个参数分别为:质心(矩形中心),矩形长宽100、50 旋转角度:30 (clockwise)
//RotatedRect 函数返回一个旋转矩形对象
RotatedRect rRect = RotatedRect(Point2f(100,100), Size2f(100,50), 30);

Point2f vertices[4];      //定义4个点的数组
rRect.points(vertices);   //将四个点存储到vertices数组中
for (int i = 0; i < 4; i++)
    // 注意Scala中存储顺序 BGR
    line(image, vertices[i], vertices[(i+1)%4], Scalar(0,255,0));
// 返回外接矩形
Rect brect = rRect.boundingRect();
rectangle(image, brect, Scalar(255,0,0));
imshow("rectangles", image);
waitKey(0);

这里写图片描述

2、Rect

Rect rect(x,y,_width,height) // 注意后面两个数值
//一个image: _width=image.cols height=image.height 
rect.area();   //返回矩形面积
rect.tl();     // top-left corner, 返回值为Point_<Tp>类型
rect.br();     // bottom-right corner , 返回值为Point_<Tp>类型
rect.contains(Point(x, y));  //Rect 是否包含Point ,返回bool类型


recta & rectb  //求交集,经常用来防止访问溢出 

实际上,求两个矩形的iou可以用这个自带的函数

cv::Rect fix_left = cv::Rect(x,y,w,h);
cv::Rect fix_right = cv::Rect(a,b,c,d);
float iou = (fix_left & fix_right).area() *1.0/ (fix_left | fix_right).area();
  • 8
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值