Opencv里离谱的RotatedRect参数

先上结论, minAreaRect和fitEllipse函数返回的RotatedRect关于角度和顶点顺序的规则不同, 所以个人强烈建议自己获取角点然后按自己的规则排序!
不知道和opencv版本有没有关系,反正我这里是opencv3.4.16.

基础的参数网上其他博客讲的十分详细, 我觉得最有争议的在于angle, height和width, 顶点. 目前可以统一的是四个顶点p0~3一定是按顺时针顺序, height一定是p0-p1 , width一定是p1-p2.

  • 先说fitEllipse返回的RotatedRect
    这个很讲武德啊, 其中height一定是长的那个边, width是短的边, angle取值范围是[0,180].
    命名方法是: 从center拉一条平行于X正方向的射线, 顺时针与第一个width的角度就是angle, 再顺时针走扫到的第一个点为p3, 如下图:

这是实际fitellipse结果显示:

  • 引起理解困难的罪魁祸首minAreaRect
    这个返回的RotatedRect, 长边不一定是height: height和width的命名依赖顶点.
    网上其他文章说是按Y值最大,X值最小的为p0, 但光两个函数返回的RotatedRect都不同, 我觉得没有参考价值, 我本机测试是Y值最大,X值最小的为p3,然后依据p0~3的顺序得到顶点, 再由顶点得到height和width, angle则是p0-p3的直线与X轴这条直线(不是X轴正方向)形成的锐角, angle取值范围是[0,90], 上图:
posted @ 2022-01-31 12:36  Junble  阅读(966)  评论(0)    收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css