plt.imshow() выдает ошибку типа («Данные изображения не могут быть преобразованы в float»)

#python #tensorflow #matplotlib

#python #tensorflow #matplotlib

Вопрос:

Я новичок в python. При попытке построить изображение, используя приведенный ниже код —

 import tensorflow as tf;
import os, sys;
import skimage;
from skimage.color import rgb2gray
import matplotlib.pyplot as p<
import random


def load_data(data_directory) :
    directories = [d for d in os.listdir(data_directory) if os.path.isdir(os.path.join(data_directory,d))]

    labels =[]
    images =[]

    for d in directories:
        label_directory = os.path.join(data_directory,d)
        file_names = [os.path.join(label_directory, f)
                      for f in os.listdir(label_directory)
                      if f.endswith(".ppm")]
        for f in file_names:
            images.append(skimage.data)
            labels.append(int(d))
    return images, labels

ROOT_PATH = "C:/Users/Administrator/Downloads/"

train_data_directory= os.path.join(ROOT_PATH, "BelgiumTSC_Training/Training")
test_data_directory = os.path.join(ROOT_PATH, "BelgiumTSC_Testing/Testing")
images, labels = load_data(train_data_directory)
traffic_signs = [300, 2250, 3650, 4000]
for i in range(len(traffic_signs)):
    plt.subplot(1, 4, i 1)
    plt.axis('off')
    plt.imshow(images[traffic_signs[i]])
    plt.subplt_adjust(wspace=0.5)
    plt.show()
  

Я получаю приведенную ниже ошибку —

 raise TypeError("Image data cannot be converted to float")
  

Ошибка типа: данные изображения не могут быть преобразованы в float

Может кто-нибудь, пожалуйста, объяснить, где я ошибаюсь. Я следую руководству от — https://www.datacamp.com/community/tutorials/tensorflow-tutorial#tensors

Комментарии:

1. можете ли вы указать тип данных переменной image? и представление о переменной images

2. Метод load_data из какого пакета?

3. Я попробовал с тем же кодом, который есть в datacamp, и я не столкнулся с какой-либо ошибкой как таковой. пожалуйста, проверьте длину вашей переменной images print(len(images)) возможно, изображения не импортированы

4. Я добавил метод — load_data. Также, когда я пытался распечатать len (изображения) Я получаю 4575.

5. пожалуйста, предоставьте полное сообщение об ошибке

Ответ №1:

В вашем методе load_data in row images.append(skimage.data) вы фактически не загружаете никакого изображения, вы просто добавляете модуль python skimage.data к изображениям, и именно по этой причине он ничего не может показать, потому что ваш images не содержит никакого изображения. Вы, вероятно, хотите images.append(skimage.data.load(f)) вместо этого.