跳到主要内容

矩形角度

拖动圆盘或滑块,观察长边方向如何映射到 [−90°, 90°)。圆盘支持方向键、Home、End 和 Shift + 方向键。

矩形角度为什么会是 −90°?​

「掩码转最小外接矩」将有效目标转换为 le90 旋转框:

[cx, cy, w, h, angle]

  • cx, cy:矩形中心坐标。
  • w, h:长边和短边,满足 w >= h。
  • angle:长边相对图像 X 轴的角度,接口使用弧度,范围为 [-π/2, π/2);换算为度是 [−90°, 90°),包含 −90°,不包含 90°。

模块先用 OpenCV 求最小外接矩;当返回的宽小于高时,交换宽高并给角度加 90°,再转为弧度并归一化。因此,不能把演示值直接当成 OpenCV 原始返回的角度。

图像坐标 X 向右、Y 向下,所以演示中顺时针为正。长边轴旋转 180° 后仍表示同一条轴;仅靠矩形几何不能区分物体的头尾。竖直长边的 90° 与 270° 都归一化为 −90°,这本身不表示计算错误。

常见角度对照​

下表输入是已确定的长边方向,不是未经宽高处理的 OpenCV 角度:

长边方向(度)le90(度)接口 angle(弧度)
0° / 180° / 360°0°0
45° / 225°45°π/4
90° / 270°−90°−π/2
135° / 315°−45°−π/4

角度演示采用下列等价的按度归一化公式(JavaScript 的负数余数需额外处理):

((angle + 90) % 180 + 180) % 180 - 90

这一步只归一化已经选定的长边方向,不处理掩码拟合,也不修改接口值。正方形没有唯一长边,接近正方形或轮廓有噪声时,选边可能变化;不能据此推断物体朝向。

如何核对输出​

  1. 确认查看的是「掩码转最小外接矩」的结果,而非其他节点的角度字段。
  2. 将接口角度乘以 180 / π 后再与演示的度数对比,不把弧度直接当作度。
  3. 同时查看宽高与可视化矩形,确认长边方向;不要只看角度正负判断结果对错。

返回后处理节点说明