使用Python生成20个 边界框(unique_boxes)的数据集
发布时间:2023-12-11 04:23:16
在Python中生成20个 边界框数据集,可以使用numpy库生成随机数来生成边界框的坐标和大小。以下是一个示例代码:
import numpy as np
def generate_unique_boxes(num_boxes, box_range):
unique_boxes = []
for _ in range(num_boxes):
while True:
# 生成随机坐标和大小
x = np.random.randint(box_range[0])
y = np.random.randint(box_range[1])
width = np.random.randint(box_range[2]) + 1
height = np.random.randint(box_range[3]) + 1
new_box = [x, y, width, height]
# 检查新生成的边界框是否与现有的边界框重叠
overlap = False
for box in unique_boxes:
if is_overlap(new_box, box):
overlap = True
break
# 如果没有重叠,则将新生成的边界框添加到列表中
if not overlap:
unique_boxes.append(new_box)
break
return unique_boxes
def is_overlap(box1, box2):
x1, y1, w1, h1 = box1
x2, y2, w2, h2 = box2
if x1 < x2 + w2 and x1 + w1 > x2 and y1 < y2 + h2 and y1 + h1 > y2:
return True
return False
# 生成20个 边界框的数据集
num_boxes = 20
box_range = [100, 100, 30, 30]
unique_boxes = generate_unique_boxes(num_boxes, box_range)
# 打印生成的边界框
for i, box in enumerate(unique_boxes):
print(f"Box {i+1}: {box}")
上述代码首先定义了两个函数,generate_unique_boxes用于生成指定数量的 边界框,is_overlap用于检查两个边界框是否重叠。
generate_unique_boxes函数根据提供的参数,生成一个指定数量的 边界框的列表。它使用了一个while循环来确保生成的边界框与已有的边界框没有重叠。在每次循环中,通过调用np.random.randint函数生成一个随机的坐标和大小,并初始化一个新的边界框。然后,检查新生成的边界框是否与已有的边界框重叠,如果没有重叠,则将新生成的边界框添加到列表当中。
最后,通过调用generate_unique_boxes函数生成20个 边界框的数据,并使用一个循环打印出这些边界框的信息。
请注意,上述代码中的边界框使用的是左上角坐标(x, y)和宽度(width)、高度(height)来定义。您可以根据自己的需求进行相应的更改。另外,由于边界框是随机生成的,每次运行代码都会得到不同的结果。
