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

无法将JPG图片转换为Tensor,报错InvalidArgumentError求助

问题解决:图片转Tensor报错Unknown image file format

错误原因

你代码里的核心问题有两个:

  1. tf.io.decode_jpeg接收的不是文件名字符串,它需要的是图片的二进制字节数据,而你直接传了文件名(还不是完整路径),TensorFlow无法解析这个字符串为图片内容。
  2. 用np.append来收集张量会把每个张量扁平化,破坏图片的维度结构,不适合用来存储图片张量。

修正后的代码

from os import listdir
from os.path import isfile, join
import numpy as np
import tensorflow as tf

vvy_imgs = []
img_dir = 'E:/vachan'
# 获取所有jpg图片的完整路径,过滤非jpg文件
img_paths = [join(img_dir, f) for f in listdir(img_dir) 
             if isfile(join(img_dir, f)) and f.lower().endswith('.jpg')]

for img_path in img_paths:
    print(img_path)
    # 先读取图片文件的二进制内容
    img_bytes = tf.io.read_file(img_path)
    # 解码二进制数据为JPEG张量
    tensor = tf.io.decode_jpeg(img_bytes, channels=3)
    # 直接将张量添加到列表中
    vvy_imgs.append(tensor)

# 若需要转为numpy数组,确保所有图片尺寸一致(否则会报错)
# vvy_imgs_np = np.array(vvy_imgs)

额外说明

  • 加了f.lower().endswith('.jpg')可以避免误处理文件夹里的非jpg文件,比如隐藏文件、其他格式的图片。
  • 如果你的图片尺寸不一致,后续需要统一尺寸的话,可以在解码后添加resize操作:
    tensor = tf.image.resize(tensor, (224, 224))  # 替换成你需要的尺寸
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 05:45:37