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

如何使用OpenCV批量处理文件夹内图片并保存至另一个文件夹

批量图片处理实现方案

不需要提前统计文件总数再构造for循环,直接遍历目标目录下的图片文件即可,路径拼接也可以借助Python的路径处理模块自动完成,不容易出错。

完整可运行代码

import cv2
from pathlib import Path

# 基础路径配置,替换为你自己的路径即可
source_dir = Path("原图片存储文件夹路径")  # 示例:Path("./raw_imgs")
target_dir = Path("处理后图片保存文件夹路径")  # 示例:Path("./processed_imgs")
# 自动创建目标文件夹,已存在也不会报错
target_dir.mkdir(exist_ok=True, parents=True)

# 支持处理的图片后缀,可根据实际需求增删
valid_suffix = [".jpg", ".jpeg", ".png", ".bmp", ".tif"]
# 处理计数变量,不需要可以删掉
count = 0

# 遍历源文件夹下的所有文件
for img_path in source_dir.iterdir():
    # 跳过非图片文件
    if img_path.suffix.lower() not in valid_suffix:
        continue
    # 读取图片
    current_img = cv2.imread(str(img_path))
    if current_img is None:
        print(f"文件{img_path.name}读取失败,已跳过")
        continue

    # ---------------- 你的图片处理逻辑写在这里 ----------------
    new_img = current_img  # 替换为你自己的处理代码
    # --------------------------------------------------------

    # 生成保存路径,默认和原文件同名,存在目标文件夹中
    save_path = target_dir / img_path.name
    # 如果需要自定义文件名,比如加前缀可以改成:
    # save_path = target_dir / f"processed_{count}_{img_path.name}"
    cv2.imwrite(str(save_path), new_img)
    count += 1

print(f"处理完成,共处理{count}张图片")

针对你提到的两个问题的说明

  • 获取文件总数:不需要提前统计文件数构造range循环,直接遍历符合条件的图片即可,代码中的count变量就是最终处理的图片总数,你也可以单独统计:遍历源目录筛选符合后缀的文件计数即可
  • 生成新存储路径:用target_dir / 文件名的方式直接拼接即可,不需要手动处理斜杠、转义符等问题,如果需要遍历源文件夹下的所有子文件夹的图片,把遍历代码改为for img_path in source_dir.rglob("*")即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:24:01