matplotlib无法打开* .jpg文件

时间:2018-10-11 16:54:10

标签: python matplotlib operating-system python-imaging-library

我在目录“ dogs”中有* .jpg图片,我可以按如下方式访问第一个图片:

import os
os.chdir(os.path.expanduser('~/fastai/data/dogscats'))
cwd=os.getcwd()
dog=os.listdir(os.path.join(cwd,'valid/dogs'))[0]
print (dog)

dog.5535.jpg

问题是当我尝试使用matplotlib绘制图像时无法 找到图片:

%matplotlib inline
import matplotlib.pyplot as plt
plt.imread(dog)

FileNotFoundError: [Errno 2] No such file or directory: 'dog.5535.jpg'

我试图用枕头打开狗,但它给出了相同的错误。

但是,如果我将图像放在桌面上并将该路径指定为plt.imread(),则可以读取“ dog.5535.jpg”。我想念什么吗?

谢谢

1 个答案:

答案 0 :(得分:2)

从这些行:

dog=os.listdir(os.path.join(cwd,'valid/dogs'))[0]
print (dog)
#OUT: dog.5535.jpg

似乎有一个文件dog.5535.jpg,其完整的相对路径(当前工作目录为w.r.t.)是valid/dogs/dog.5535.jpg。但是,dog变量仅包含文件名。因此,当您尝试

%matplotlib inline
import matplotlib.pyplot as plt
plt.imread(dog)

它将在当前工作目录中查找dog.5535.jpg,而不是文件所在的目录。来自cwd,您仍然必须添加其余路径:

%matplotlib inline
import matplotlib.pyplot as plt
plt.imread(dog)
os.path.join('valid', 'dogs', dog)
#or os.path.join(cwd, 'valid', 'dogs', dog)

请注意,我还更改了path.join函数中的valid/dogs部分,因为在path.join的参数中指定了路径分隔符比使用path.join