参考倾斜矩形框的IOU计算与Python实现 - 云+社区 - 腾讯云
其算法流程大致如下:
给定两个倾斜的矩形
1. 首先设置点集;
2. 将两个矩形的交点均加入至 中;
3. 接着将矩形包含在
中的顶点加入至
中;
4. 同样,将矩形 包含在
中的顶点加入至
中;
5. 将点集中的点进行三角化,可排成逆时针,计算面积
;
6. 此时的IOU为。
使用Python中的Shapely模块可轻松地进行Skew IOU Computation:
from shapely.geometry import Polygon
def intersection(g, p):
g=np.asarray(g)
p=np.asarray(p)
g = Polygon(g[:8].reshape((4, 2)))
p = Polygon(p[:8].reshape((4, 2)))
if not g.is_valid or not p.is_valid:
return 0
inter = Polygon(g).intersection(Polygon(p)).area
union = g.area + p.area - inter
if union == 0:
return 0
else:
return inter/union