在图像里,目标检测是其中一个领域,最著名的是以矩形框作为目标检测区域,在图像中表达一个矩形框需要有坐标(top,left,bottom,right),即左上角坐标,右下角坐标。从而可以在给定的两个矩形中计算IOU值(交并比),小数点可以四舍五入保留4位。

例如输入:
(661,27,679,47)
(662,27,682,47)

接下来我们用Python来进行编程:

def compute_iou(rect1,rect2):
	# (y0,x0,y1,x1) = (top,left,bottom,right)
	S_rect1 = (rect1[2] - rect1[0]) * (rect1[3] - rect1[1])
	S_rect2 = (rect2[2] - rect2[0]) * (rect2[3] - rect1[1])

	sum_all = S_rect1 + S_rect2
	left_line = max(rect1[1],rect2[1])
	right_line = min(rect1[3],rect2[3])
	top_line = max(rect1[0],rect2[0])
	bottom_line = min(rect1[2],rect2[2])

	if left_line >= right_line or top_line >= bottom_line:
		return 0
	else:
		intersect = (right_line - left_line) * (bottom_line - top_line)
		return (intersect / (sum_area - intersect)) * 1.0

if__name__=='__main__':
	a,b,c,d,e,f,g,h = map(int, input().split())
	rect1 = (a,b,c,d)
	rect2 = (e,f,g,h)
	iou = compute_iou(rect1,rect2)
	print("%.4f" %iou)
Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐