python使用numpy計算兩個框的iou方法示例
更新時間:2023年08月08日 09:44:43 作者:Eureka
這篇文章主要介紹了python使用numpy計算兩個框的iou方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
程序
需求簡單,記錄一下。
import numpy as np
import cv2
def iou(bbox1, bbox2):
xmin1, ymin1, xmax1, ymax1 = bbox1
xmin2, ymin2, xmax2, ymax2 = bbox2
# 獲取矩形框交集對應的頂點坐標(intersection)
xx1 = np.max([xmin1, xmin2])
yy1 = np.max([ymin1, ymin2])
xx2 = np.min([xmax1, xmax2])
yy2 = np.min([ymax1, ymax2])
# 計算交集面積
inter_area = (np.max([0, xx2 - xx1])) * (np.max([0, yy2 - yy1]))
# 計算兩個矩形框面積
area1 = (xmax1 - xmin1 ) * (ymax1 - ymin1)
area2 = (xmax2 - xmin2) * (ymax2 - ymin2)
# 計算交并比(交集/并集)
iou = inter_area / (area1 + area2 - inter_area ) # 注意:這里inter_area不能乘以2,乘以2就相當于把交集部分挖空了
return iou
def main():
img = np.zeros((600,600), dtype=np.uint8)+255 # 創(chuàng)建一個全白畫板(灰度圖)
img = np.stack((img,)*3, axis=-1) # 將灰度圖轉化為三通道圖。目的是能在畫板上畫出彩色的圖案。
# 初始化兩個框
bbox1 = [200, 200, 400, 400] # xmin, ymin, xmax, ymax
bbox2 = [275, 300, 325, 550] # xmin, ymin, xmax, ymax
# 在畫板上畫出這兩個彩色框
cv2.rectangle(img, (bbox1[0:2]), (bbox1[2:4]), (255,69,0), -1)
cv2.rectangle(img, (bbox2[0:2]), (bbox2[2:4]), (218,112,214), -1)
# 計算這兩個框的iou
rst = iou(bbox1, bbox2)
cv2.putText(img, 'iou: %.6f' % rst, (10,30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,255), 2)
cv2.imwrite('res.png',img)
if __name__ == "__main__":
main()結果

以上就是python使用numpy計算兩個框的iou方法示例的詳細內容,更多關于python numpy計算兩個框iou的資料請關注腳本之家其它相關文章!
相關文章
linux mint中搜狗輸入法導致pycharm卡死的問題
這篇文章主要介紹了linux mint中搜狗輸入法導致pycharm卡死的問題,這篇文章給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
python [::-1] [::-1,::-1]的具體使用
本文主要介紹了python [::-1] [::-1,::-1]的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-05-05
pycharm2022.1最新永久激活碼破解補丁一鍵安裝教程免費分享(2022持續(xù)更新)
更新到Pycharm 2022.2.x版,pycharm2022.2最新可用永久激活碼分享(持續(xù)更新),pycharm激活補丁一鍵安裝簡單方便,無需手動修改文件,兼容蘋果MAC,linux,Windows系統(tǒng)2022-07-07

