我有几个重叠的边界框,包含一个对象,但它们在某些地方最低限度重叠.作为一个整体,它们包含整个对象,但openCV的groupRectangles函数不会返回包含该对象的框.我有的边框用蓝色显示,我想要返回的边框在这里用红色显示
我想得到只有重叠矩形的联合但不确定如何迭代列表而不组合每个矩形.
我有下面显示的并集和交叉函数,以及由(x y w h)表示的矩形列表,其中x和y是框左上角的坐标.
def union(a,b):
x = min(a[0], b[0])
y = min(a[1], b[1])
w = max(a[0]+a[2], b[0]+b[2]) - x
h = max(a[1]+a[3], b[1]+b[3]) - y
return (x, y, w, h)
def intersection(a,b):
x = max(a[0], b[0])
y = max(a[1], b[1])
w = min(a[0]+a[2], b[0]+b[2]) - x
h = min(a[1]+a[3], b[1]+b[3]) - y
if w<0 or h<0: return () # or (0,0,0,0) ?
return (x, y, w, h)
我的组合功能目前如下:
def combine_boxes(boxes):
noIntersect = False
while noIntersect == False and len(boxes) > 1:
a = boxes[0]
print a
listBoxes &