python使用numpy計(jì)算兩個(gè)框的iou方法示例
程序
需求簡(jiǎn)單,記錄一下。
import numpy as np
import cv2
def iou(bbox1, bbox2):
xmin1, ymin1, xmax1, ymax1 = bbox1
xmin2, ymin2, xmax2, ymax2 = bbox2
# 獲取矩形框交集對(duì)應(yīng)的頂點(diǎn)坐標(biāo)(intersection)
xx1 = np.max([xmin1, xmin2])
yy1 = np.max([ymin1, ymin2])
xx2 = np.min([xmax1, xmax2])
yy2 = np.min([ymax1, ymax2])
# 計(jì)算交集面積
inter_area = (np.max([0, xx2 - xx1])) * (np.max([0, yy2 - yy1]))
# 計(jì)算兩個(gè)矩形框面積
area1 = (xmax1 - xmin1 ) * (ymax1 - ymin1)
area2 = (xmax2 - xmin2) * (ymax2 - ymin2)
# 計(jì)算交并比(交集/并集)
iou = inter_area / (area1 + area2 - inter_area ) # 注意:這里inter_area不能乘以2,乘以2就相當(dāng)于把交集部分挖空了
return iou
def main():
img = np.zeros((600,600), dtype=np.uint8)+255 # 創(chuàng)建一個(gè)全白畫(huà)板(灰度圖)
img = np.stack((img,)*3, axis=-1) # 將灰度圖轉(zhuǎn)化為三通道圖。目的是能在畫(huà)板上畫(huà)出彩色的圖案。
# 初始化兩個(gè)框
bbox1 = [200, 200, 400, 400] # xmin, ymin, xmax, ymax
bbox2 = [275, 300, 325, 550] # xmin, ymin, xmax, ymax
# 在畫(huà)板上畫(huà)出這兩個(gè)彩色框
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)
# 計(jì)算這兩個(gè)框的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()結(jié)果

以上就是python使用numpy計(jì)算兩個(gè)框的iou方法示例的詳細(xì)內(nèi)容,更多關(guān)于python numpy計(jì)算兩個(gè)框iou的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python wxPython庫(kù)Core組件BoxSizer用法示例
這篇文章主要介紹了Python wxPython庫(kù)Core組件BoxSizer用法,結(jié)合實(shí)例形式分析了wxPython BoxSizer布局管理相關(guān)使用方法及操作注意事項(xiàng),需要的朋友可以參考下2018-09-09
Python中pycharm編輯器界面風(fēng)格修改方法
這篇文章主要介紹了Python中pycharm編輯器界面風(fēng)格修改方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
Python統(tǒng)計(jì)可散列的對(duì)象之容器Counter詳解
Counter是一個(gè)容器,可以跟蹤等效值增加的次數(shù).這個(gè)類可以用來(lái)實(shí)現(xiàn)其他語(yǔ)言中常用包或多集合數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的算法.本篇文章非常詳細(xì)的介紹了容器Counter的使用方式,需要的朋友可以參考下2021-05-05
Python?Asyncio?庫(kù)之同步原語(yǔ)常用函數(shù)詳解
這篇文章主要為大家介紹了Python?Asyncio?庫(kù)之同步原語(yǔ)常用函數(shù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
Python實(shí)現(xiàn)數(shù)據(jù)的序列化操作詳解
在日常開(kāi)發(fā)中,對(duì)數(shù)據(jù)進(jìn)行序列化和反序列化是常見(jiàn)的數(shù)據(jù)操作,Python提供了兩個(gè)模塊方便開(kāi)發(fā)者實(shí)現(xiàn)數(shù)據(jù)的序列化操作,即?json?模塊和?pickle?模塊。本文就為大家詳細(xì)講解這兩個(gè)模塊的使用,需要的可以參考一下2022-07-07
Python中SyntaxError的語(yǔ)法錯(cuò)誤排查與修復(fù)方法
在Python編程中,SyntaxError是最常見(jiàn)的錯(cuò)誤類型之一,表示代碼存在語(yǔ)法問(wèn)題,本文結(jié)合CSDN社區(qū)的實(shí)戰(zhàn)經(jīng)驗(yàn),系統(tǒng)性分析SyntaxError的排查與修復(fù)方法,并提供豐富的代碼示例,需要的朋友可以參考下2025-06-06
python實(shí)現(xiàn)不同文件夾下的函數(shù)相互調(diào)用
這篇文章主要介紹了python實(shí)現(xiàn)不同文件夾下的函數(shù)相互調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08
Python高效生成requirements.txt的兩種方法
Python項(xiàng)目依賴管理是開(kāi)發(fā)流程中的關(guān)鍵環(huán)節(jié),requirements.txt文件作為記錄項(xiàng)目依賴的標(biāo)準(zhǔn)方式,能確保環(huán)境一致性并簡(jiǎn)化協(xié)作部署流程,掌握其生成方法對(duì)開(kāi)發(fā)者至關(guān)重要,本文給大家介紹了兩種高效生成requirements.txt的方法,需要的朋友可以參考下2025-12-12

