opencv中minAreaRect()函数返回矩形的注意点以及绘制矩形

minAreaRect()函数返回矩形的注意点以及绘制

minAreaRect()函数主要用来返回某个轮廓的最小包含矩形,可以是倾斜的,经常与findContours()配合使用,今天用到了觉得需要注意以下几点,同时也比较容易遗忘,特此记录一篇,供以后翻阅。
opencv中minAreaRect()函数返回矩形的注意点以及绘制矩形_第1张图片
上图为minAreaRect()返回矩形的大致示意图,其中注意以下四点:

  • 返回矩形的四个顶点可以通过如下方式获取
        cv::Point2f* touchVertices = new cv::Point2f[4];
        touchRect.points(touchVertices);
touchVertices即为四个顶点的数组。

绘制的话直接用四个顶点画线即可:

for (int i = 0; i < 4; ++i)
    {
        cv::line(result, touchVertices[i % 4], touchVertices[(i + 1) % 4], cv::Scalar(255), 2);
    }
  • 上述数组中索引0的点永远是矩形在图中的最低点,也就是y最大的顶点。
  • 从索引0的顶点开始,顺时针方向,依次为1,2,3索引点。
  • 索引0和索引3之间为矩形的width,索引0和索引1之间为矩形的height。
  • 角度θ即是水平轴逆时针旋转到 索引0和索引3所在边 之间的夹角。

转载请标明出处!

你可能感兴趣的:(OpenCV,opencv,c++,几何学)