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

Python OpenCV如何将加边界框的图片保存到已存在的Augmented目录

实现方案

你现有代码已经完成了目录创建、图片遍历、边界框绘制的基础逻辑,只需要补全路径拼接与写入逻辑即可完成保存,同时可以修复原代码里几个易引发错误的写法:

  • 原代码反复调用os.chdir()切换工作目录、硬编码字符串长度截取路径的写法兼容性极差,不同运行环境下很容易出现路径读取错误,直接用os.path.join()拼接路径更稳妥
  • 原代码中cv2.rectangle()的坐标点顺序写反,该接口要求传入的第一个坐标为矩形左上角点、第二个为右下角点,否则绘制的边框位置会出错
  • 原代码导入了未使用的PIL库,属于冗余导入可直接删除

补全后的可运行代码

import os
import cv2

SAVE_DIR_NAME = "Augmented"
# 初始化保存目录
if not os.path.isdir(SAVE_DIR_NAME):
    os.mkdir(SAVE_DIR_NAME)

# 定义支持的图片格式
SUPPORT_EXT = {".jpg", ".jpeg", ".png"}
# 遍历当前目录筛选待处理图片
current_dir = os.getcwd()
all_files = os.listdir(current_dir)
img_list = [f for f in all_files if os.path.splitext(f)[1].lower() in SUPPORT_EXT]

for img_name in img_list:
    # 读取原图
    raw_img = cv2.imread(img_name)
    # 绘制边界框,坐标可根据实际需求调整
    img_with_bbox = cv2.rectangle(raw_img, (45, 43), (234, 256), (0, 0, 255), 2)
    # 拼接目标保存路径
    save_target_path = os.path.join(SAVE_DIR_NAME, img_name)
    # 写入处理后的图片到Augmented目录
    cv2.imwrite(save_target_path, img_with_bbox)

    # 预览逻辑,不需要可直接注释删除
    cv2.imshow("Processed Preview", img_with_bbox)
    # 按q键退出预览,按其余任意键切换到下一张
    press_key = cv2.waitKey(0)
    if press_key == ord("q"):
        break

cv2.destroyAllWindows()

核心保存逻辑说明

  • 保存操作核心调用cv2.imwrite()接口,第一个参数传入处理后图片的完整目标路径,第二个参数传入绘制完边界框的图像对象即可完成写入
  • 用os.path.join()拼接目录和文件名,自动适配不同操作系统的路径分隔符,不会出现路径格式错误
  • 如果需要统一保存为指定格式(比如全部存为jpg),只需要在拼接保存路径时替换后缀名即可,注意要匹配cv2.imwrite()支持的编码格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 02:45:35