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

如何在Keras中加载本地图片 解决Colab风格迁移代码运行报错

问题根因

报错的核心原因是变量类型不匹配:

  • 原始代码中keras.utils.get_file()返回的是图片文件的本地路径字符串,赋值给base_image_path后,后续代码可以直接将该字符串作为路径参数传入keras.preprocessing.image.load_img()读取图片
  • 修改后你直接调用keras.utils.load_img('/content/my_pic.jpg'),该方法返回的是PIL.JpegImagePlugin.JpegImageFile类型的图片对象,后续代码再将该对象作为路径参数传给load_img(),自然会触发类型错误,展示图片时传入PIL对象也会触发对应的格式警告。

修正方案

不需要调用load_img给路径变量赋值,直接把本地图片的路径字符串赋值给base_image_path即可,修改后的代码如下:

import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.applications import vgg19

# 直接填写你上传到Colab的本地图片路径字符串
base_image_path = '/content/my_pic.jpg'
style_reference_image_path = keras.utils.get_file('starry_night.jpg', 'https://i.imgur.com/9ooB60I.jpg')
result_prefix = 'paris_generated'
iterations = 5000

# 不同损失分量的权重
total_variation_weight = 1e-6
style_weight = 2e-6
content_weight = 2e-8

# 生成图片的尺寸
width, height = keras.preprocessing.image.load_img(base_image_path).size
img_nrows = 400
img_ncols = int(width * img_nrows / height)

如果后续需要展示PIL类型的图片对象,可以参考以下写法将其转为字节流后再传入IPython.display.Image:

from IPython.display import Image, display
from PIL import Image as PILImage
import io

# 方法1:直接传图片路径展示,最简单
display(Image(base_image_path))

# 方法2:已有PIL图片对象时的展示方式
pil_img = PILImage.open(base_image_path)
img_byte_arr = io.BytesIO()
pil_img.save(img_byte_arr, format='PNG')
display(Image(img_byte_arr.getvalue()))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:24:06