#python #python-imaging-library #google-colaboratory #attributeerror
#python #python-imaging-library #google-colaboratory #ошибка атрибута
Вопрос:
Я использую PIL, и я получил это сообщение об ошибке:
AttributeError: '_io.BufferedRandom' object has no attribute 'resize'
Мой код:
def phash(img):
img = img.resize((8, 8), Image.ANTIALIAS).convert('L')
avg = reduce(lambda x, y: x y, img.getdata()) / 64.
return reduce(
lambda x, y, z: x | (z << y),
enumerate(map(lambda i: 0 if i < avg else 1, img.getdata())),
0
)
Комментарии:
1. Ваш
img
, по-видимому, является самим объектом file, а не изображением, считанным из файла.
Ответ №1:
Код, которым вы поделились, включает только определение функции, и я думаю, что проблема в вашем основном коде.
Полученное вами сообщение об ошибке показывает, что объект, размер которого вы пытаетесь изменить, не обладает такой функциональностью, и из-за этого я думаю, что вы случайно загрузили изображение с помощью команды open('path/to/image.png')
, когда вам нужно загрузить его как объект ‘Image’ с помощью команды Image.open('path/to/image.png')
.
Попробуйте написать что-то вроде этого:
from PIL import Image
from functools import reduce
def phash(img):
pass # your function here
path = 'path/to/image.png'
image = Image.open(path)
phash = phash(image)