Python 官方文档:入门教程 => 点击学习
已知中心点、长宽和旋转角度,求矩形的四个顶点坐标 理论基础情况一: θ ∈ [ 0
本次实现有几个前提:
可以将情况分为两种,即 θ ∈ [ 0 , π / 2 ] \theta \in [0, \pi/2] θ∈[0,π/2]和 θ ∈ [ π / 2 , π ] \theta \in [\pi/2, \pi] θ∈[π/2,π]
先看第一种情况 θ ∈ [ 0 , π / 2 ] \theta \in [0, \pi/2] θ∈[0,π/2]:
已知矩形的中心点 ( x , y ) (x, y) (x,y),旋转角度 θ \theta θ在图中用橙色标注。
先来求 ( x1 , y1 ) (x_1,y_1) (x1,y1),用到图中绿色的辅助线,用到的三角形都标注了角 θ \theta θ:
再来求 ( x2 , y2 ) (x_2,y_2) (x2,y2),用到图中紫色的辅助线:
接下来的 ( x3 , y3 ) (x_3,y_3) (x3,y3)和 ( x4 , y4 ) (x_4,y_4) (x4,y4)就是 ( x1 , y1 ) (x_1,y_1) (x1,y1)和 ( x2 , y2 ) (x_2,y_2) (x2,y2)关于 ( x , y ) (x, y) (x,y)的对称点,只需要将正项变为负项,负项变为正项即可:
同理,此时旋转角度 θ \theta θ大于 π / 2 \pi/2 π/2,所以用到的辅助三角形的角度标注为 π − θ \pi -\theta π−θ。
先来求 ( x1 , y1 ) (x_1,y_1) (x1,y1),用到图中绿色的辅助线,用到的三角形都标注了角 π − θ \pi -\theta π−θ:
( x3 , y3 ) (x_3,y_3) (x3,y3)和 ( x4 , y4 ) (x_4,y_4) (x4,y4)就是 ( x1 , y1 ) (x_1,y_1) (x1,y1)和 ( x2 , y2 ) (x_2,y_2) (x2,y2)关于 ( x , y ) (x, y) (x,y)的对称点。
可以看到两种情况下,得到的四个点的值是一样的,比如情况一里 ( x1 , y1 ) (x_1,y_1) (x1,y1)和情况二里 ( x2 , y2 ) (x_2,y_2) (x2,y2)一样,所以在代码实现里可以不分情况讨论,不影响最终结果。
def get_corners(box): #这里本人项目yaw [-pi/4, 3*pi/4),需要映射到[0, pi) box = box.detach().cpu().numpy() x = box[0] y = box[1] w = box[2] l = box[3] yaw = box[4] if yaw <0: #用来映射 yaw = yaw + np.pi bev_corners = np.zeros((4, 2), dtype=np.float32) cos_yaw = np.cos(yaw) sin_yaw = np.sin(yaw) bev_corners[0, 0] = (w / 2) * cos_yaw - (l / 2) * sin_yaw +x bev_corners[0, 1] = (w / 2)* sin_yaw + (l / 2) * cos_yaw +y bev_corners[1, 0] = (l / 2) * sin_yaw + (w / 2) * cos_yaw +x bev_corners[1, 1] = (w / 2)* sin_yaw - (l / 2) * cos_yaw +y bev_corners[2, 0] = (-w / 2) * cos_yaw - (-l / 2) * sin_yaw +x bev_corners[2, 1] = (-w / 2)* sin_yaw + (-l / 2) * cos_yaw +y bev_corners[3, 0] = (-l / 2) * sin_yaw + (-w / 2) * cos_yaw +x bev_corners[3, 1] = (-w / 2)* sin_yaw - (-l / 2) * cos_yaw +y return bev_corners
来源地址:https://blog.csdn.net/weixin_45453121/article/details/129582622
--结束END--
本文标题: 已知中心点、长宽和旋转角度,求矩形的四个顶点坐标(Python)
本文链接: https://www.lsjlt.com/news/421772.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0