Объект 'list' не имеет атрибута 'ndim'
Попробовал узнать разрешение изображений из массива images, используя ndim:
print(images.ndim)
Но выдало ошибку:
AttributeError: 'list' object has no attribute 'ndim'
Пытался найти её в интернете, но там проблема с совершенно другой библиотекой и предлагают использовать np. array() , не отрицаю, что он мог бы помочь, да вот только я даже не знаю, куда именно его записать, пытался
images = np.array([[],[]])
Но из-за этого появлялась другая ошибка:
AttributeError: 'numpy.ndarray' object has no attribute 'append'
Массив images содержит загруженные таким образом изображения:
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 = np.array([[],[]])
images = np.array([[],[]])
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.io.imread(f))
labels.append(int(d))
Как можно исправить? Вопрос направлен к той ошибке, которую можно решить, ну а я, если честно, не знаю, которая из них решаема.
Ответы (1 шт):
Вам просто нужно присвоить к images список:
images = [] и также с labels.
В списках есть метод append, отвечающий за добавление элементов.
Если нужно узнать количество измерений с помощью ndim, то вот пример кода:
import numpy as np
lst = np.array([1, 2, 3, 4])
lst = np.append(lst, 0)
print(lst)
print(lst.ndim)
Пример реализации вывода разрешения изображений после применения skimage.io.imread():
import numpy as np
lst = np.array([[[235, 230, 234], [233, 228, 232]]]) # изображения
print(lst[0, :,0:2]) # их разрешение
Но, все же, лучше использовать библиотеку PIL для получения разрешения изображения:
from PIL import Image
(img_width, img_height) = Image.open("имя изображения или путь к нему").size