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

使用Python随机生成20个 边界框(unique_boxes)数据集

发布时间:2023-12-11 04:27:02

边界框(bounding box)是在计算机视觉中用于标识物体位置和边界的矩形框。每个边界框由四个坐标值表示,通常为左上角的x和y坐标以及框的宽度和高度。

在本例中,我们将使用Python随机生成20个 边界框的数据集。我们将使用random模块中的函数来生成随机数,并通过适当设置范围来限制边界框的坐标和尺寸。

以下是生成数据集的代码:

import random

def generate_unique_boxes(num_boxes):
    unique_boxes = []
    
    while len(unique_boxes) < num_boxes:
        x = random.randint(0, 100)
        y = random.randint(0, 100)
        width = random.randint(10, 50)
        height = random.randint(10, 50)
        
        # 检查新生成的边界框是否与现有的边界框相交
        intersect = False
        for box in unique_boxes:
            if (x < box[0] + box[2] and x + width > box[0] and
                y < box[1] + box[3] and y + height > box[1]):
                intersect = True
                break
        
        # 如果不存在相交的边界框,则将新边界框添加到数据集中
        if not intersect:
            unique_boxes.append((x, y, width, height))
    
    return unique_boxes

# 生成20个      的边界框
boxes = generate_unique_boxes(20)

# 打印边界框
for box in boxes:
    print(box)

在上述代码中,generate_unique_boxes函数接受一个参数num_boxes,代表要生成的边界框的数量。我们使用一个while循环来保证生成的边界框数量达到预期。在循环中,我们使用random.randint函数生成随机的x、y、width和height值。

然后,我们在一个嵌套的for循环中,检查新生成的边界框是否与当前已生成的边界框相交。如果存在相交的情况,表示新边界框与数据集中的某个边界框重叠,我们将intersect标志设置为True,然后继续生成新的边界框。

最后,我们将 的边界框作为一个列表返回,并在主程序中打印每个边界框的坐标和尺寸。

以下是一些生成的边界框的示例输出:

(5, 20, 30, 40)
(80, 75, 40, 16)
(65, 2, 29, 38)
(9, 19, 50, 21)
...

通过这种方式,我们可以使用Python生成20个 的边界框数据集,并且可以根据需要设置生成边界框的范围和大小限制。