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

OpenCV Python 如何生成包含所有小物体外接矩形的大Bounding box并裁剪

多小边界框合并最小包围框及图像裁剪解决方案

核心逻辑

所有小外接矩形的最小包围框,只需取所有小框坐标的四个极值即可:左边界取所有小框左边界的最小值,上边界取所有小框上边界的最小值,右边界取所有小框右边界的最大值,下边界取所有小框下边界的最大值。

实现步骤

1. 统一小边界框格式

首先将所有已标注的小外接矩形统一转换为(x_min, y_min, x_max, y_max)格式(图像坐标系默认左上角为原点,x轴向右,y轴向下):

  • 若现有标注为(center_x, center_y, width, height)格式,可通过以下公式转换:
    x_min = center_x - width / 2
    y_min = center_y - height / 2
    x_max = center_x + width / 2
    y_max = center_y + height / 2
    

2. 计算全局包围框

遍历所有小边界框,提取四个极值得到全局大包围框:

  • 全局左边界:global_xmin = min([bbox[0] for bbox in all_small_bboxes])
  • 全局上边界:global_ymin = min([bbox[1] for bbox in all_small_bboxes])
  • 全局右边界:global_xmax = max([bbox[2] for bbox in all_small_bboxes])
  • 全局下边界:global_ymax = max([bbox[3] for bbox in all_small_bboxes])

可选优化:可根据需求添加内边距,避免裁剪到小物体边缘,同时需要做边界校验,确保全局包围框不超出原图的宽高范围:

padding = 10 # 内边距像素值可自定义
img_w, img_h = 原图宽度, 原图高度
global_xmin = max(0, global_xmin - padding)
global_ymin = max(0, global_ymin - padding)
global_xmax = min(img_w, global_xmax + padding)
global_ymax = min(img_h, global_ymax + padding)

3. 裁剪图像区域

以下提供两种常用Python图像处理库的实现代码:

PIL 实现

from PIL import Image

# 读取原图
img = Image.open("输入图像路径.jpg")
# 裁剪图像,crop方法参数对应(left, upper, right, lower)
cropped_img = img.crop((global_xmin, global_ymin, global_xmax, global_ymax))
# 保存裁剪结果
cropped_img.save("裁剪结果输出路径.jpg")

OpenCV 实现

import cv2

# 读取原图
img = cv2.imread("输入图像路径.jpg")
img_h, img_w = img.shape[:2]
# 边界校验(可选)
padding = 5
global_xmin = max(0, global_xmin - padding)
global_ymin = max(0, global_ymin - padding)
global_xmax = min(img_w, global_xmax + padding)
global_ymax = min(img_h, global_ymax + padding)
# OpenCV图像为numpy数组,裁剪顺序为[纵坐标范围, 横坐标范围]
cropped_img = img[global_ymin:global_ymax, global_xmin:global_xmax]
# 保存裁剪结果
cv2.imwrite("裁剪结果输出路径.jpg", cropped_img)

注意事项

  • 所有坐标的单位必须统一为像素,且对应同一图像的坐标系
  • 若存在标注为空的情况,需提前过滤无效的小边界框,避免极值计算出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:51:04