代码之家  ›  专栏  ›  技术社区  ›  A.E

Matplotlib无法打开*.jpg文件

  •  0
  • A.E  · 技术社区  · 6 年前

    我在目录“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() . 我错过什么了吗?

    谢谢

    1 回复  |  直到 6 年前
        1
  •  2
  •   FlyingTeller AEgo    6 年前

    从这些行中:

    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)
    

    它寻找 狗狗 在当前工作目录中,文件不在其中。来自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)
    

    注意我也改变了 valid/dogs 部分在path.join函数中,作为在参数中指定路径分隔符 path.join 有点超过了使用点 路径连接