IndexError: список индексов вне диапазона - при построении изображений - PullRequest
1 голос
/ 27 сентября 2019

Написал функцию для отображения 6 рентгеновских снимков сундука из 2 разных папок.Изображения разделены на 2 папки, содержащиеся в 1 папке.(Обучающие данные являются основной папкой, и в ней находятся две папки с именами «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 Ответ

1 голос
/ 27 сентября 2019

Имя файла изображений в папке 'NORMAL' не имеет '_' для разделения (например, IM-0115-0001.jpeg, NORMAL2-IM-0666-0001.jpeg).Таким образом, вы не можете разделить его на основе '_'.

Я только что прокомментировал 2 строки в вашем коде, и он работает нормально.

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')

Надеюсь, это поможет.

...