gpt4 book ai didi

python - 权限错误 : Using Image. 打开

转载 作者:行者123 更新时间:2023-12-03 16:24:52 26 4
gpt4 key购买 nike

我正在为 Image.open 使用 PIL

以下是我的图片路径:

loc = "./data/Flicker8k_reshaped"

当我尝试在此路径中打开图像文件时,使用以下用法打开图像。
Image.open(loc + "/" + train_filenames[0]) # Opens an image 
np.array(Image.open(loc + "/" + train_filenames[0])) # converts that into numpy array

train_filenames 是包含我需要使用 numpy 数组矢量化的图像的文件名的列表。

但是当我尝试在循环中运行它并列出理解时,
train = np.array([np.array(Image.open(loc+"/"+fname)) for fname in train_filenames])

我收到以下错误。
---------------------------------------------------------------------------
PermissionError Traceback (most recent call last)
<ipython-input-35-90eaea1b75ca> in <module>()
----> 1 train = np.array([np.array(Image.open(loc+"/"+fname)) for fname in train_filenames])
2 test = np.array([np.array(Image.open(loc+"/"+fname)) for fname in test_filenames])
3 val = np.array([np.array(Image.open(loc+"/"+fname)) for fname in val_filenames])
4
5 print(train.shape)

<ipython-input-35-90eaea1b75ca> in <listcomp>(.0)
----> 1 train = np.array([np.array(Image.open(loc+"/"+fname)) for fname in train_filenames])
2 test = np.array([np.array(Image.open(loc+"/"+fname)) for fname in test_filenames])
3 val = np.array([np.array(Image.open(loc+"/"+fname)) for fname in val_filenames])
4
5 print(train.shape)

C:\Anaconda\envs\tensorflow-cpu\lib\site-packages\PIL\Image.py in open(fp, mode)
2541
2542 if filename:
-> 2543 fp = builtins.open(filename, "rb")
2544 exclusive_fp = True
2545

好像

builtins.open(filename, "rb")



我选择了 5 个文件名并将其保存在不同的列表中,然后运行上述语句并在循环中运行代码。它也起作用了。我认为“这里的错误信息具有误导性。”

最佳答案

可能只是 train_filenames 中的文件名之一无效(即使 train_filenames[0] 显然是有效的)。仅出于调试目的(您可以在它工作后将其放回原处),将用于打开图像的列表推导解压缩为 for循环并添加一个 print陈述:

images = []
for fname in train_filenames:
print(loc+"/"+fname)
images.append(np.array(Image.open(loc+"/"+fname)))
train = np.array(images)

在出现异常之前打印出的最后一个文件名将是问题之一。显然是导致 PermissionError 的原因之一在 Windows 上,如果您尝试 open a directory as a file...

或者,如果循环在第一个文件之后中断,那么您知道您手上的问题更奇怪/更难解决。

关于python - 权限错误 : Using Image. 打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49937468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com