欢迎访问宙启技术站
智能推送

使用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)来定义。您可以根据自己的需求进行相应的更改。另外,由于边界框是随机生成的,每次运行代码都会得到不同的结果。