Я считаю, что большая часть кода у меня правильная, пока я не доберусь до последней строки кода. Я впервые пишу метод класса. Не знаю, как указать местоположение изображения.
Не знаю, как действовать
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'
У метода инициализации класса есть обязательный аргумент im_name
, и вы пытаетесь создать объект класса без передачи какого-либо аргумента.
Теперь я получаю следующую трассировку: трассировка (последний последний вызов): файл «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
из вашей трассировки кажется, что у вас есть anaconda3, а также pycharm, установленные в вашей ОС, поэтому это может создать проблемы несовместимости между модулями, поэтому убедитесь, что pillow
установлен в pycharm, проверив его в интерпретаторе проекта. Если это не работает для вас, Этот или Этот могут помочь ^_^
Вы должны передать имя изображения при создании экземпляра класса. В своем __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()
изменить
image_play()
наimage_play("foo.png")