两个矩形之间的距离 python
import cv2
import numpy as npdef opencv_rect_distance(rect1, rect2):"""使用OpenCV计算两个矩形之间的距离参数:rect1: (x, y, w, h) 格式的矩形rect2: (x, y, w, h) 格式的矩形返回:中心点距离和IoU"""# 计算中心点距离center1 = (rect1[0] + rect1[2] // 2, rect1[1] + rect1[3] // 2)center2 = (rect2[0] + rect2[2] // 2, rect2[1] + rect2[3] // 2)distance = np.sqrt((center2[0] - center1[0])**2 + (center2[1] - center1[1])**2)# 计算IoUrect1_pts = np.array([[rect1[0], rect1[1]], [rect1[0] + rect1[2], rect1[1]],[rect1[0] + rect1[2], rect1[1] + rect1[3]],[rect1[0], rect1[1] + rect1[3]]])rect2_pts = np.array([[rect2[0], rect2[1]],[rect2[0] + rect2[2], rect2[1]],[rect2[0] + rect2[2], rect2[1] + rect2[3]],[rect2[0], rect2[1] + rect2[3]]])# 计算交集intersection = cv2.intersectConvexConvex(rect1_pts, rect2_pts)[0]# 计算并集union = rect1[2] * rect1[3] + rect2[2] * rect2[3] - intersectioniou = intersection / union if union > 0 else 0return distance, iou# 示例用法
distance, iou = opencv_rect_distance(rect1, rect2)
print(f"OpenCV中心点距离: {distance}, IoU: {iou}")