Я пытаюсь написать объект класса, который выполняет манипуляции с изображением

Я считаю, что большая часть кода у меня правильная, пока я не доберусь до последней строки кода. Я впервые пишу метод класса. Не знаю, как указать местоположение изображения.

Не знаю, как действовать

from PIL import Image

class image_play(object):
    def __init__(self, im_name):
        self.im_name = im_name


    def rgb_to_gray_image(self):
        im = Image.open(self.im_name)
        im = im.convert('LA')
        return im

    # editing pixels of image to white
    def loop_over_image(self):
        im = Image.open(self.im_name)
        width, height = im.size
        # nested loop over all pixels of image
        temp = []
        for i in range(width):
            for j in range(height):
                temp.append((255,255,255))#append a tuple for the RGB channel values for each pixel

        image_out = Image.new(im.mode,im.size) #create a new image usig PIl
        image_out.putdata(temp) #use the temp list to create the image
        return image_out

obj = image_play()    
TypeError                                 Traceback (most recent call last)
<ipython-input-8-d6175b134ccc> in <module>
     25         return image_out
     26 
---> 27 obj = image_play()

TypeError: __init__() missing 1 required positional argument: 'im_name'

изменить image_play() на image_play("foo.png")

eyllanesc 27.05.2019 01:55

У метода инициализации класса есть обязательный аргумент im_name, и вы пытаетесь создать объект класса без передачи какого-либо аргумента.

John Gordon 27.05.2019 02:01

Теперь я получаю следующую трассировку: трассировка (последний последний вызов): файл «C:/Users/Kelly/.PyCharmCE2019.1/config/scratches/scratch_1.‌​py», строка 1, в <module> из импорта PIL Файл изображения "C:\ProgramData\Anaconda3\lib\site-packages\PIL\Image.py", строка 94, в <module> из . import _imaging as core ImportError: Ошибка загрузки DLL: указанный модуль не найден. Процесс завершен с кодом выхода 1

user11526198 27.05.2019 03:08

из вашей трассировки кажется, что у вас есть anaconda3, а также pycharm, установленные в вашей ОС, поэтому это может создать проблемы несовместимости между модулями, поэтому убедитесь, что pillow установлен в pycharm, проверив его в интерпретаторе проекта. Если это не работает для вас, Этот или Этот могут помочь ^_^

Vasu Deo.S 27.05.2019 06:38
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы должны передать имя изображения при создании экземпляра класса. В своем __init__ вы говорите, что это требует ввода im_name

Итак, вы бы написали что-то вроде

obj = image_play("./image.png")

Я добавил следующий код, и теперь все хорошо.

pic = image_play('test.png')
picGray = pic.rgb_to_gray_image()
picGray.show()
picWhite = pic.loop_over_image()
picWhite.show()

Другие вопросы по теме