如何計算兩個矩形框的IoU

2021-08-20 00:03:31 字數 720 閱讀 7463

由於最近跟別人說我搞過目標檢測,然後被問到乙個問題,如何計算兩個矩形框的iou?  

一開始我回答說可以採用opencv的&運算和|運算來計算iou,但他要我不採用opencv 的介面,自己寫。

當時我回答的比較亂,分4種情況進行討論2個矩形框之間的位置關係,最後他告訴我說,根本不需要討論,採用max(),min()就可以實現。囧。

大致做法是先求出2個矩形框的交集,交集也是矩形框或空,計算相交部分面積再除以並集的面積即可。

關鍵在於怎麼不分情況討論就計算出交集部分的面積。

摘取ssd中bbox_util.cpp一部分**如下:

void intersectbbox(const normalizedbbox& bbox1, const normalizedbbox& bbox2,

normalizedbbox* intersect_bbox) else

}

float jaccardoverlap(const normalizedbbox& bbox1, const normalizedbbox& bbox2,

const bool normalized) else

if (intersect_width > 0 && intersect_height > 0) else

}

這個交集的計算採用max,min就計算出來了,真是巧妙啊。

兩個矩形的交並比(IOU)

由於最近的專案裡面要用到,雖然是個小東西,但還是來記錄一下.現在我們知道矩形t的左下角座標 x0,y0 右上角座標 x1,y1 矩形g的左下角座標 a0,b0 右上角座標 a1,b1 這裡我們可以看到area roit 跟arae roig 在確定座標而不確定兩個矩形是否相交的情況下,為已知的常量 ...

任意兩個旋轉矩形的IOU計算方法

方法一 import cv2 import numpy as np image cv2.imread downloads timg.jpeg original grasp bboxes np.array 361,260.582 301 315 320 336 380,281.582 dtype np...

python 計算兩個多邊形的IOU

計算兩個多邊形的iou。可以是不同類的多邊形,如乙個矩形和乙個三角形 也可以是兩個同類的多邊形。import cv2 import math from skimage.draw import polygon from skimage.feature import peak local max imp...