You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Numpy中如何计算填充后框的边界框(无需生成填充数组)

问题:Numpy填充数组后,原数组中框的位置映射

场景说明

现有二维Numpy数组定义如下:

import numpy as np
# 原二维世界数组
a = np.zeros((w_world, h_world))

还有一个ltwh格式的框b(即由left、top、width、height四个参数定义,代表框在数组a坐标系中的位置与尺寸),这个框可能超出数组a的边界。

我需要确定:当使用Numpy的pad方法对数组a进行填充后,这个框b在填充后的新数组中的对应位置。

我已经能自行实现这个功能(支持多种填充模式),但想知道Numpy有没有内置的相关函数可以直接完成这个位置映射。


解答

目前Numpy并没有专门用于直接计算这种框位置映射的内置函数。

要完成这个映射,核心逻辑是根据pad方法指定的**填充宽度(pad_width参数)**计算偏移量:

  • 首先把pad_width转换为二维数组的完整格式:((顶部填充行数, 底部填充行数), (左侧填充列数, 右侧填充列数))
  • 假设原框b的ltwh参数为(b_left, b_top, b_width, b_height)
  • 填充后框的新ltwh参数就是:
    (b_left + 左侧填充列数, b_top + 顶部填充行数, b_width, b_height)
    

注意事项

  • 不管填充模式是constant、edge还是其他类型,这个偏移计算逻辑都通用——填充模式只影响填充区域的数值,不会改变填充后数组的尺寸以及原元素/框的位置偏移规则。
  • 如果pad_width是用简化格式指定的(比如单个整数、所有维度统一填充),需要先将其转换为((top, bottom), (left, right))的完整格式,再提取对应方向的填充值计算偏移。

内容的提问来源于stack exchange,提问作者Gulzar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 14:02:12