IndexError:列表索引超出范围-绘制图像时

时间:2019-09-27 02:48:17

标签: python image plot directory index-error

编写了一项功能,以显示来自2个不同文件夹的6张胸部X射线图像。图像被分成1个文件夹中包含的2个文件夹。 (训练数据是主文件夹,其中两个文件夹名为“ PNEUMONUA”和“ NORMAL”。

当我在一个文件夹中的图片上运行该功能时,它运行正常,当我在另一个文件夹中使用该功能时,出现“索引错误:列表索引超出范围”。

代码:

TRAINING_DATA = "/home/jack/Desktop/chest_xray/train/"

TEST_DATA = "/home/jack/Desktop/chest_xray/test/"

VALIDATION_DATA = "/home/jack/Desktop/chest_xray/val/"



def plot_images(path, labeled=True, max_images=6):
  amount = 0
  fig = plt.figure(figsize=(10, 6))

  for file in os.listdir(path):
    if file.endswith('.jpeg'):
      if amount == max_images:
        break

      img = mpimg.imread(os.path.join(path, file))
      plt.subplot(231+amount)
      if labeled:
        plt.title(file.split('_')[1])
      imgplot = plt.imshow(img)

      amount += 1


plot_images(TRAINING_DATA + '/NORMAL')
#ERROR

plot_images(TRAINING_DATA + '/PNEUMONIA')
#WORKS FINE

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

“ NORMAL”文件夹中图像的文件名没有“ _”可分割(例如,IM-0115-0001.jpeg,NORMAL2-IM-0666-0001.jpeg)。因此,您无法根据'_'对其进行拆分。

我刚刚在您的代码中注释了第二行,并且工作正常。

TRAINING_DATA = "<path>/chest_xray/train/" 


def plot_images(path, labeled=True, max_images=6):
  amount = 0
  fig = plt.figure(figsize=(10, 6))

  for file in os.listdir(path):
    if file.endswith('.jpeg'):
      if amount == max_images:
        break

      img = cv2.imread(os.path.join(path, file))
      plt.subplot(231+amount)
      plt.title("Normal")
      imgplot = plt.imshow(img)

      amount += 1

plot_images(TRAINING_DATA + '/NORMAL')

希望这会有所帮助。