Добавление черной рамки к изображению с помощью python - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть набор данных с парой изображений разных размеров. Чтобы обучить свою нейронную сеть, я хотел изменить размер этих изображений до одного общего размера, добавив черную рамку вокруг всех моих изображений. Я использовал следующий код:

from PIL import Image 
import numpy as np 


old_im = Image.open('C:/Users/tobis/OneDrive/Desktop/Masterarbeit/data/2017-IWT4S-HDR_LP-dataset/crop_h1/I00002.png')
old_size = old_im.size
print(old_size)

new_size = (800, 800)
print(new_size)
new_im = Image.new("RGB", new_size)   ## luckily, this is already black!
new_im.paste(old_im, ((new_size[0]-old_size[0])/2,
                      (new_size[1]-old_size[1])/2))

И получил эту ошибку:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-37-3363f60dba3b> in <module>
     11 new_im = Image.new("RGB", new_size)   ## luckily, this is already black!
     12 new_im.paste(old_im, ((new_size[0]-old_size[0])/2,
---> 13                       (new_size[1]-old_size[1])/2))

~\.conda\envs\python36\lib\site-packages\PIL\Image.py in paste(self, im, box, mask)
   1466             self.im.paste(im, box, mask.im)
   1467         else:
-> 1468             self.im.paste(im, box)
   1469 
   1470     def alpha_composite(self, im, dest=(0, 0), source=(0, 0)):

TypeError: integer argument expected, got float

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

Может кто-нибудь мне помочь?

1 Ответ

1 голос
/ 01 апреля 2020

Деление производит число с плавающей запятой, но метод требует целых чисел.

new_size = (800, 800)
print(new_size)
new_im = Image.new("RGB", new_size)   ## luckily, this is already black!
x = int((new_size[0]-old_size[0])/2)
y = int((new_size[1]-old_size[1])/2))
new_im.paste(old_im, (x,y))
...