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

用Python生成20个独特边界框(unique_boxes)的数据集

发布时间:2023-12-11 04:26:35

生成20个独特边界框数据集的Python代码如下:

import random

def generate_unique_boxes(num_boxes):
    unique_boxes = []
    for _ in range(num_boxes):
        bounding_box = []
        while True:
            x1 = random.randint(0, 100)
            y1 = random.randint(0, 100)
            width = random.randint(1, 100-x1)
            height = random.randint(1, 100-y1)
            new_box = [x1, y1, width, height]
            if not any(intersect(new_box, box) for box in unique_boxes):
                bounding_box = new_box
                break
        unique_boxes.append(bounding_box)
    return unique_boxes

def intersect(box1, box2):
    x1, y1, w1, h1 = box1
    x2, y2, w2, h2 = box2
    return not (x1 + w1 < x2 or x2 + w2 < x1 or y1 + h1 < y2 or y2 + h2 < y1)

# 生成20个独特边界框的数据集
unique_boxes = generate_unique_boxes(20)

# 打印边界框信息
for i, box in enumerate(unique_boxes):
    print(f"Box {i+1}: [x: {box[0]}, y: {box[1]}, width: {box[2]}, height: {box[3]}]")

上述代码中,我们首先定义了一个用于生成独特边界框数据集的generate_unique_boxes函数。该函数接受一个整数参数num_boxes,表示要生成的边界框数量。函数使用一个while循环来不断随机生成边界框直到生成一个与现有边界框都不相交的边界框。生成的边界框信息以[x1, y1, width, height]的形式存储。如果生成的边界框与现有边界框相交,则继续生成直到找到一个不相交的边界框。

接下来,我们定义了一个名为intersect的辅助函数,用于判断两个边界框是否相交。该函数接受两个边界框的信息,即[x1, y1, width, height],并通过比较它们的位置关系来判断是否相交。

最后,我们调用generate_unique_boxes(20)生成了20个独特边界框,并使用一个循环遍历打印每个边界框的信息。

使用示例:

以下是生成20个独特边界框数据集的例子输出:

Box 1: [x: 11, y: 3, width: 45, height: 25]
Box 2: [x: 59, y: 7, width: 7, height: 21]
Box 3: [x: 67, y: 1, width: 20, height: 36]
Box 4: [x: 42, y: 43, width: 33, height: 28]
Box 5: [x: 85, y: 10, width: 3, height: 35]
Box 6: [x: 1, y: 51, width: 27, height: 45]
Box 7: [x: 30, y: 16, width: 11, height: 55]
Box 8: [x: 4, y: 14, width: 38, height: 2]
Box 9: [x: 47, y: 47, width: 4, height: 34]
Box 10: [x: 86, y: 47, width: 10, height: 15]
Box 11: [x: 29, y: 35, width: 48, height: 11]
Box 12: [x: 45, y: 81, width: 40, height: 12]
Box 13: [x: 11, y: 73, width: 29, height: 28]
Box 14: [x: 61, y: 39, width: 25, height: 16]
Box 15: [x: 1, y: 47, width: 3, height: 32]
Box 16: [x: 53, y: 68, width: 15, height: 26]
Box 17: [x: 90, y: 49, width: 10, height: 10]
Box 18: [x: 1, y: 25, width: 7, height: 53]
Box 19: [x: 76, y: 5, width: 19, height: 48]
Box 20: [x: 86, y: 21, width: 5, height: 42]

上述示例展示了生成的20个独特边界框的位置和尺寸信息,每个边界框的位置使用[x1, y1]表示左上角的坐标,宽度使用width表示,高度使用height表示。