用Python随机生成20个不重复边界框(unique_boxes)的数据集
发布时间:2023-12-11 04:25:07
在Python中,可以使用random和numpy库来生成随机的边界框数据集。下面是一个生成20个不重复边界框数据集的示例代码:
import random
import numpy as np
def generate_unique_boxes(num_boxes):
unique_boxes = []
for _ in range(num_boxes):
while True:
# 随机生成边界框的左上角和右下角坐标
x1, y1 = random.randint(0, 100), random.randint(0, 100)
x2, y2 = random.randint(0, 100), random.randint(0, 100)
# 确保x2大于x1,y2大于y1,以确保生成的边界框是有效的
if x2 > x1 and y2 > y1:
# 创建边界框(左上角和右下角坐标表示)
box = (x1, y1, x2, y2)
# 检查当前生成的边界框是否与已生成的边界框重叠或相等
if not any([np.array_equal(box, b) or
(x1 <= b[2] and x2 >= b[0] and y1 <= b[3] and y2 >= b[1])
for b in unique_boxes]):
unique_boxes.append(box)
break
return unique_boxes
# 生成20个不重复边界框的数据集
unique_boxes = generate_unique_boxes(20)
print(unique_boxes)
上述代码中,定义了一个函数generate_unique_boxes来生成指定数量的不重复边界框。该函数会使用while循环来检查当前生成的边界框是否与之前生成的边界框重叠或相等,直到生成一个不重复的边界框为止。
使用例子:
# 首先导入必要的库
import cv2
import matplotlib.pyplot as plt
# 生成20个不重复边界框的数据集
unique_boxes = generate_unique_boxes(20)
# 读取一张图片
image = cv2.imread('example.jpg')
# 在图片上绘制边界框
for box in unique_boxes:
x1, y1, x2, y2 = box
cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)
# 显示带有边界框的图片
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()
在上述使用例子中,首先导入了cv2和matplotlib.pyplot库,然后读取了一张名为"example.jpg"的图片。接下来,使用生成的20个不重复边界框数据集,在图片上绘制了对应的边界框,并将带有边界框的图片显示出来。
注意:由于使用了随机生成边界框,每次运行上述代码得到的不重复边界框数据集和绘制的边界框位置都会不同。
