Я пытаюсь написать объект класса, который выполняет манипуляции с изображением - PullRequest
0 голосов
/ 27 мая 2019

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

Не уверен, как действовать

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'

Ответы [ 2 ]

1 голос
/ 27 мая 2019

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

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

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

0 голосов
/ 27 мая 2019

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

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