minAreaRect()函数返回矩形的注意点以及绘制
minAreaRect()函数主要用来返回某个轮廓的最小包含矩形,可以是倾斜的,经常与findContours()配合使用,今天用到了觉得需要注意以下几点,同时也比较容易遗忘,特此记录一篇,供以后翻阅。
上图为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所在边 之间的夹角。
转载请标明出处!
版权声明:本文为qq_40777185原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。