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

图像缩放时如何正确转换x,y,w,h格式的边界框坐标

图像缩放时边界框坐标转换方法

首先明确已知基础参数:

  • 原图尺寸:宽W=1980,高H=1080
  • 原始边界框参数:x=759,y=786,w=369,h=100(x、y为边界框左上角点坐标)
  • 目标新图尺寸:宽newW=640,高newH=480

根据不同的图像缩放逻辑,边界框转换方式分为两类:

场景1:直接拉伸图像至新尺寸(不保留原始宽高比)

你目前写的newX = (newW/W) * x仅完成了x坐标的转换,由于宽、高方向缩放比例不一致,y坐标和边界框宽高参数需要对应乘以高方向的缩放比。
首先计算两个方向的独立缩放系数:

scale_x = newW / W = 640 / 1980 ≈ 0.323
scale_y = newH / H = 480 / 1080 ≈ 0.444

完整转换公式:

new_x = x * scale_x
new_y = y * scale_y
new_w = w * scale_x
new_h = h * scale_y

代入数值计算得到新边界框参数:

  • new_x ≈ 245
  • new_y ≈ 349
  • new_w ≈ 119
  • new_h ≈ 44

注意:这种方式会拉伸变形图像内容,实际视觉任务中极少使用。

场景2:等比例缩放+边缘填充(保留原始宽高比,即letterbox方式)

这是目标检测等任务最常用的缩放逻辑,不会造成内容变形,转换步骤如下:

  1. 取两个方向缩放系数的较小值作为统一缩放比,保证缩放后图像不超出新图边界:
    scale = min(scale_x, scale_y) ≈ 0.323
    
  2. 计算等比例缩放后图像的实际尺寸:
    scaled_w = W * scale ≈ 640
    scaled_h = H * scale ≈ 349
    
  3. 计算上下/左右需要填充的边距(常规实现为两侧均分填充):
    pad_w = (newW - scaled_w) / 2 = 0
    pad_h = (newH - scaled_h) / 2 ≈ 65.5
    
  4. 代入公式计算新边界框参数:
    new_x = x * scale + pad_w
    new_y = y * scale + pad_h
    new_w = w * scale
    new_h = h * scale
    

代入数值计算得到新边界框参数:

  • new_x ≈ 245
  • new_y ≈ 320
  • new_w ≈ 119
  • new_h ≈ 32

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 08:15:32