报错NameError: name 'session' is not defined,求批量图片处理代码修复
问题解决:NameError: name 'session' is not defined
错误原因很明确:你调用process函数时传入的session变量从未被初始化。rembg需要先创建一个Session实例来复用模型,避免重复加载提升处理效率。
修正后的完整代码
from PIL import Image import rembg from pathlib import Path def process(session, image, *, size=None, bgcolor='white'): "session is a rembg Session, and image is a PIL Image" if size is not None: image = image.resize(size) else: size = image.size result = Image.new("RGB", size, bgcolor) out = rembg.remove(image, session=session) result.paste(out, mask=out) return result # 初始化rembg会话,复用模型提升处理效率 session = rembg.new_session() for path_in in Path(r'C:\Users\test').glob('*.jpg'): path_out = path_in.parent / f"{path_in.stem}-out.png" if path_out.exists(): continue with Image.open(path_in) as img: out = process(session, img, size=(700, 700), bgcolor='#FFFFFF') out.save(path_out)
关键修改点
- 添加
session = rembg.new_session():在循环前创建rembg的会话实例,让所有图片处理复用同一个模型,避免重复加载模型浪费资源 - 确保
session变量在调用process时已被定义,直接解决NameError问题
内容的提问来源于stack exchange,提问作者Deidraak
相关产品推荐
相关产品推荐

