Mtaplotlib: TypeError: 对象不是一个8位字符串路径或类似Python文件的对象。

问题描述 投票:0回答:1

我有一个名为'img'的图片文件名数组。这个变量是这样的。

['../realData/0.jpg', '../realData/1.jpg']

我想做的是在这个数组中迭代,然后用Matplotlib绘制每张图片。这是我的代码。

for i in range(len(img)):
    img = mpimg.imread(img[i])
    plt.imshow(img)
    plt.show()

第一张图片显示得很好 但第二张图片却出现了错误

Traceback (most recent call last):
  File "C:/Users/Maximal/Documents/Python/PyCharm/TrafficSignClassification/run/predictRealData.py", line 13, in <module>
    model.evaluateRealData(labelNames, imagePath)
  File "C:\Users\Maximal\Documents\Python\PyCharm\TrafficSignClassification\model\trafficSignsClassification.py", line 186, in evaluateRealData
    self.showImage(srcImg)
  File "C:\Users\Maximal\Documents\Python\PyCharm\TrafficSignClassification\model\trafficSignsClassification.py", line 225, in showImage
    img = mpimg.imread(img[i])
  File "C:\Users\Maximal\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\image.py", line 1436, in imread
    return handler(fname)
  File "C:\Users\Maximal\AppData\Local\Programs\Python\Python36\lib\site-packages\matplotlib\image.py", line 1390, in read_png
    return _png.read_png(*args, **kwargs)
TypeError: Object does not appear to be a 8-bit string path or a Python file-like object

Process finished with exit code 1

我不明白的是,第一张图能正常显示,而第二张图却不能。我使用windows snipping工具采集了两张图片,并将它们保存为jpg文件。在资源管理器中,我可以打开这两张图片就好了。怎么会出现这种情况呢?这些图片在形状、大小等方面应该是相同的。

python matplotlib mat
1个回答
0
投票

问题在于变量 img. 我把我正在迭代的数组分配给第一次迭代的输出帧.所以我不得不把代码从这个:

for i in range(len(img)):
    img = mpimg.imread(img[i])
    plt.imshow(img)
    plt.show()

改成这样

for i in range(len(img)):
    image = mpimg.imread(img[i])
    plt.imshow(image)
    plt.show()

然后它又开始工作了

© www.soinside.com 2019 - 2024. All rights reserved.