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

如何使用Python与OpenCV将Bounding Box以外区域设为白色?

嘿,我来帮你搞定这个需求!要把Bounding Box以外的区域改成纯白色,用OpenCV+Python就能轻松实现,下面是详细的步骤和代码:

实现方法(基于OpenCV + Python)

1. 先做好准备工作

确保你已经安装了所需的库,打开终端运行:

pip install opencv-python numpy

2. 核心代码实现

假设你已经知道每张图片里Bounding Box的坐标(格式是(x1, y1, x2, y2),其中(x1,y1)是框的左上角点,(x2,y2)是右下角点),直接用下面的函数就能处理:

import cv2
import numpy as np

def keep_bbox_only(image_path, bbox, output_path):
    # 读取目标图片
    img = cv2.imread(image_path)
    # 创建和原图尺寸完全一致的纯白色背景
    white_background = np.ones_like(img) * 255
    # 提取Bounding Box范围内的原图区域
    x1, y1, x2, y2 = bbox
    bbox_content = img[y1:y2, x1:x2]
    # 把框内的内容复制到白色背景的对应位置
    white_background[y1:y2, x1:x2] = bbox_content
    # 保存处理后的图片
    cv2.imwrite(output_path, white_background)

# 示例用法:替换成你的图片路径和实际bbox坐标
# 处理第一张源图
keep_bbox_only("src.png", (100, 80, 500, 450), "result1.png")
# 处理第二张源图
keep_bbox_only("src2.png", (90, 75, 490, 440), "result2.png")

3. 不知道Bounding Box坐标?用这个工具获取!

如果不清楚具体的坐标数值,我给你一个交互式的小工具,运行后用鼠标框选区域就能得到精确坐标:

import cv2

def get_bbox_coords(image_path):
    img = cv2.imread(image_path)
    # 弹出窗口让你用鼠标框选区域
    roi = cv2.selectROI("请框选目标区域", img, fromCenter=False, showCrosshair=True)
    cv2.destroyAllWindows()
    # 转换为(x1,y1,x2,y2)的格式返回
    return (int(roi[0]), int(roi[1]), int(roi[0]+roi[2]), int(roi[1]+roi[3]))

# 调用获取第一张图的bbox坐标
bbox_1 = get_bbox_coords("src.png")
print("第一张图的Bounding Box坐标:", bbox_1)
# 获取第二张图的坐标
bbox_2 = get_bbox_coords("src2.png")
print("第二张图的Bounding Box坐标:", bbox_2)

运行这段代码后,会弹出图片窗口,你用鼠标拖动框选想要保留的区域,按回车键确认,终端就会输出对应的坐标啦。

最后验证效果

按照上面的步骤处理后,生成的图片就会和你期望的效果一致:只有Bounding Box内的区域保留原图内容,其余部分都是纯白色。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 03:58:09