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

调用tf.image.resize后Matplotlib的plt.imshow输出空白画布问题求助

TensorFlow图像resize后matplotlib显示空白解决方案

核心原因

tf.image.resize 执行时会自动将输入的uint8类型图像张量(取值范围0255)转换为float32类型,但不会修改数值区间,转换后的张量取值仍保持0255。
matplotlib的plt.imshow接口对不同输入类型的取值范围要求不同:

  • 输入为uint8类型时,默认按0~255的区间解析颜色
  • 输入为float类型时,默认按0~1的区间解析颜色,超过1的数值会被截断为1,对应纯白色,因此整张图显示为空白画布。

可行解决方案

你可以任选以下任意一种方法修复问题:

方法1:将resize后的图像归一化到0~1区间

img = parse_image(img_paths[0])
img = tf.image.resize(img, [224, 224])
# 新增归一化步骤
img = img / 255.0
plt.imshow(img)

方法2:将resize后的图像转回uint8类型

img = parse_image(img_paths[0])
img = tf.image.resize(img, [224, 224])
# 新增类型转换步骤
img = tf.cast(img, tf.uint8)
plt.imshow(img)

方法3:强制指定matplotlib的颜色解析区间

不需要修改张量,直接在调用plt.imshow时增加vmin和vmax参数即可:

img = parse_image(img_paths[0])
img = tf.image.resize(img, [224, 224])
plt.imshow(img.numpy(), vmin=0, vmax=255)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:36:04