好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

python根据坐标判断两个矩形(横平竖直的)交并比

两个横平竖直的矩形,已知顶点坐标,判断是否相交(肉眼看不算)。 如果相交,相交面积是多少?

两个横平竖直矩形如果相交,可以大致有如下三类相对位置

(由其中一种中心旋转或者轴线翻转得出的视为同一类)

我们可以看出三类的相交部分的四条边是有共同特征的。 左侧边:两个矩形左侧边中靠右的那条边 上 边: 两个矩形上边中靠下的那条边 右 边: 两个矩形右边中靠左的那条边 下 边:两个矩形下边中靠上的那条边

另外就是判断不相交。 已图形处理中坐标的特点,左上角为顶点 0,0向右 为正X,向下为正Y 如果一个矩形的左侧边不小于另一个矩形的右侧边,或者同理 上下两边,都是不相交,否则必定相交

求交集比并集 iou

 # 已  左上角为x1,y1 右下角为 x2,y2 
def getIou(ax1,ay1,ax2,ay2,bx1,by1,bx2,by2):
    # 判断如果没有相交直接返回 0
    if ax1 >= bx2 or ax2 <= bx1 or ay1 >= by2 or ay2 <= by1:
        return 0
    # 交集面积
    intersection = (min(ax2,bx2) - max(ax1,bx1)) * (min(ay2,by2) - max(ay1,by1))
    # 并集面积 = 两个矩形面积相加 减去 交集面积
    and_set = lw * lh + w * h - intersection
    return intersection / and_set 

无论是像素坐标值 还是归一化的小数,都能直接用

查看更多关于python根据坐标判断两个矩形(横平竖直的)交并比的详细内容...

  阅读:27次