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

Python代码实现Bbox的resize操作

发布时间:2024-01-01 21:00:30

下面是一个使用Python实现Bbox的resize操作的代码示例:

import cv2
import numpy as np

def resize_bbox(bbox, original_size, new_size):
    # 获取原始图像的尺寸
    original_height, original_width = original_size

    # 获取新图像的尺寸
    new_height, new_width = new_size

    # 计算宽度和高度的缩放比例
    width_scale = new_width / original_width
    height_scale = new_height / original_height

    # 调整每个边界框的坐标值
    resized_bbox = []
    for box in bbox:
        x1, y1, x2, y2 = box

        # 计算新的边界框坐标
        resized_x1 = int(x1 * width_scale)
        resized_y1 = int(y1 * height_scale)
        resized_x2 = int(x2 * width_scale)
        resized_y2 = int(y2 * height_scale)

        # 将新的边界框坐标添加到列表中
        resized_bbox.append([resized_x1, resized_y1, resized_x2, resized_y2])

    return resized_bbox

# 将原始图像的尺寸设置为(100, 100)
original_size = (100, 100)

# 将新图像的尺寸设置为(200, 200)
new_size = (200, 200)

# 定义原始边界框的坐标
bbox = [[10, 10, 50, 50], [30, 30, 70, 70]]

# 调用resize_bbox函数调整边界框的大小
resized_bbox = resize_bbox(bbox, original_size, new_size)

# 打印调整后的边界框坐标
print(resized_bbox)

这段代码实现了一个resize_bbox函数,该函数接收原始边界框的坐标,原始图像的尺寸和新图像的尺寸作为输入参数,并返回调整后的边界框坐标。

在示例代码中,我们定义了一个原始边界框大小为100x100的图像,并定义了两个边界框,分别为[10, 10, 50, 50][30, 30, 70, 70]。然后,我们调用resize_bbox函数将原始边界框调整为200x200大小的新图像的边界框。

执行代码后,将打印出调整后的边界框坐标。在这个例子中,边界框坐标将调整为[[20, 20, 100, 100], [60, 60, 140, 140]],表示新图像中边界框的位置和大小。具体而言,[10, 10, 50, 50]边界框将调整为[20, 20, 100, 100][30, 30, 70, 70]边界框将调整为[60, 60, 140, 140]

这样,我们就实现了Python代码中Bbox的resize操作,并给出了一个使用例子,用于调整边界框的大小。