Код, которым вы поделились, включает только определение функции, и я думаю, что проблема в вашем основном коде.
Полученное вами сообщение об ошибке показывает, что объект, размер которого вы пытаетесь изменить, не соответствуетимеют эту функциональность, и из-за этого я думаю, что вы случайно загрузили изображение с помощью команды open('path/to/image.png')
, когда вам нужно загрузить его как объект 'Изображение' с помощью команды 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)