无法将JPG图片转换为Tensor,报错InvalidArgumentError求助
问题解决:图片转Tensor报错Unknown image file format
错误原因
你代码里的核心问题有两个:
tf.io.decode_jpeg接收的不是文件名字符串,它需要的是图片的二进制字节数据,而你直接传了文件名(还不是完整路径),TensorFlow无法解析这个字符串为图片内容。- 用
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
相关产品推荐
相关产品推荐

