我有一个包含许多矩形坐标的数组,作为opencv的numpy数组。
rec_arr = [[1404, 677, 73, 73],
[2670, 1062, 115, 115],
[2981, 1077, 114, 114],
[ 691, 1077, 107, 107],
[2251, 1272, 131, 131],
[3035, 1239, 139, 139],
[1050, 1359, 135, 135],
[ 887, 1663, 149, 149]]
这是从数组x,y,w,h
给出的1个矩形的表示+--------------------> X axis
|
| (X,Y) (X+W, Y)
| +--------------+
| | |
| | |
| | |
| +--------------+
v (X, Y+H) (X+W,Y+H)
Y axis
我想循环遍历数组,将所有矩形相互比较,然后突出显示相交的矩形。这是我的尝试:
for (x, y, w, h) in rec_arr:
X1 = x
Y1 = y
W1 = w
H1 = h
for (x, y, w, h) in rec_arr:
X2 = x
Y2 = y
W2 = w
H2 = h
if (X1+W1<X2 or X2+W2<X1 or Y1+H1<Y2 or Y2+H2<Y1):
print 'no intersect'
else:
print 'intersect'
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 0, 255), -1)
我还尝试使用itertools.combinations()
来比较阵列中2个矩形的每个组合,但没有成功。任何帮助都会很棒!