Kaggle环境下将预处理后图像写入输出目录的问题求助
Kaggle环境保存处理后图像的解决方案
原有代码错误说明
- 第一种写法错误:
fromarray是PIL.Image类的方法,不是OpenCV读取生成的numpy数组自带的方法,且保存路径仅指定目录未填写完整文件名 - 第二种写法错误:
cv2.imwrite第一个参数需要传入带文件名的完整存储路径,仅传入目录无法完成写入 - 第三种写法错误:
plt.imsave参数顺序颠倒,第一个参数为存储路径,第二个参数为图像数组,且matplotlib默认使用RGB通道顺序,直接写入OpenCV读取的BGR格式图像会出现颜色偏移
前置准备
如果需要写入自定义的./output子目录,需先确保目录存在,可提前执行目录创建代码:
import os os.makedirs('./output', exist_ok=True)
Kaggle默认工作目录为/kaggle/working,写入该目录下的文件会自动同步到输出产物中,也可以直接使用相对路径./指代该目录。
可行写入方案
方案1:使用OpenCV直接写入(最适配现有代码)
你本身使用cv2读取图像,直接用cv2写入无需额外转换通道:
# 写入到工作根目录 cv2.imwrite('processed_image.jpg', img) # 写入到自定义output子目录 cv2.imwrite('./output/processed_image.jpg', img)
方案2:使用PIL库写入
如果后续需要做PIL相关的图像处理,可按如下写法操作:
from PIL import Image # OpenCV读取的图像为BGR通道,需先转为RGB避免偏色 img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) pil_img = Image.fromarray(img_rgb) # 保存文件 pil_img.save('./output/processed_image.jpg')
方案3:使用Matplotlib写入
import matplotlib.pyplot as plt # 转换通道避免偏色 img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imsave('./output/processed_image.jpg', img_rgb)
验证写入结果
写入完成后可执行如下代码确认文件生成成功:
print(os.listdir('./output'))
内容的提问来源于stack exchange,提问作者laxman kusuma
相关产品推荐
相关产品推荐

