Opencv 计算图片旋转角度

本文介绍了一个使用OpenCV进行轮廓检测的方法。通过findContours函数获取图像中的轮廓,并利用minAreaRect来寻找最小外接矩形,进而计算并绘制轮廓的最大宽度和高度。此过程涉及旋转矩形的角度计算及轮廓的可视化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

vector<vector<Point>> vec_point;
vector<Vec4i> hireachy;
findContours(img_canny1, vec_point, hireachy, RETR_TREE, CHAIN_APPROX_SIMPLE, Point(0, 0));
//绘制轮廓
img3 = Mat::zeros(img1.size(),CV_8UC1);
float maxw = 0;
float maxh = 0;
double degree = 0;

for (size_t t=0;t<vec_point.size();t++)
{
  RotatedRect minRect = minAreaRect(vec_point[t]);
  degree = abs(minRect.angle);
  if (degree>0)
  {
    maxw = max(maxw,minRect.size.width);
    maxh = max(maxh,minRect.size.height);
  }
}

for (size_t t=0;t<vec_point.size();t++)
{
  RotatedRect minRect = minAreaRect(vec_point[t]);
  if (maxw ==minRect.size.width && maxh == minRect.size.height)
  {
    degree = minRect.angle;
    Point2f pts[4];
    minRect.points(pts);
    Scalar color_1 = Scalar(rng1.uniform(0,255), rng1.uniform(0, 255), rng1.uniform(0, 255));
    for (int k=0;k<4;k++)
    {
      line(img3,pts[k],pts[(k+1)%4],color_1,2,8,0);
    }
  }
}

cout << degree<< endl;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BeanGo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值