使用Keras加载图像时出现“No such file or directory”错误求助
解决Keras ImageDataGenerator保存图像时的FileNotFoundError问题
先看你报错里的路径:/Users/Steven/data/image_data/preview\\test_0_2149.png —— 这里同时出现了正斜杠/和反斜杠\\,明显是路径格式混乱导致的问题。结合错误里的Anaconda路径C:\Users\Steven\...,能看出来你是在Windows系统上运行代码,但却写了类Unix系统的路径(/Users/...),PIL在保存图像时自动使用了Windows的路径分隔符,两种格式混在一起就导致系统找不到正确的目录了。
另外你说手动创建了/User/Steven/data/image_data/preview,但Windows的用户目录实际是C:\Users\Steven,这个路径本身就不符合Windows的格式,系统自然找不到。
给你两个关键的解决步骤:
1. 用Python的os.path模块构建跨平台路径
这个模块会自动根据你的系统选择正确的路径分隔符,彻底避免手动写路径的错误。
2. 自动创建目标目录,避免手动创建的疏漏
用os.makedirs可以自动创建目录,就算目录已经存在也不会报错,比手动创建更可靠。
修改后的完整代码如下:
import os from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img # 构建Windows系统下的正确路径 base_dir = os.path.join('C:', 'Users', 'Steven', 'data', 'image_data') preview_dir = os.path.join(base_dir, 'preview') # 自动创建preview目录(如果不存在的话) os.makedirs(preview_dir, exist_ok=True) datagen = ImageDataGenerator( rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, rescale=1./255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest') # 加载图像的路径也用os.path.join构建 img_path = os.path.join(base_dir, 'test_00000.png') img = load_img(img_path) x = img_to_array(img) x = x.reshape((1,) + x.shape) i = 0 for batch in datagen.flow(x, batch_size=1, save_to_dir=preview_dir, save_prefix='test', save_format='png'): i += 1 if i > 20: break
运行这段代码后,应该就能正常生成并保存变换后的图像了。
内容的提问来源于stack exchange,提问作者Steven Chan
相关产品推荐
相关产品推荐

