Я играю с кодом в этой записной книжке .
Когда я загружаю свои собственные передние планы, для определенных изображений, сохраненных как '.png', я получаю эту ошибку:
ValueError Traceback (последний вызов был последним)
<ipython-input-63-1464e7681a29> in <module>()
21 foreground_path = random.choice(foregrounds)
22 background_path = random.choice(backgrounds)
---> 23 composite, mask, bbox = compose_images(foreground_path, background_path)
24
25 composite_path = os.path.join(output_dir, 'image_{0:04d}.png'.format(i))
<ipython-input-47-53344b89732e> in compose_images(foreground_path, background_path)
4 assert os.path.splitext(foreground_path)[1].lower() == '.png', 'foreground must be a .png file'
5 foreground = Image.open(foreground_path)
----> 6 foreground_alpha = np.array(foreground.getchannel(3))
7 assert np.any(foreground_alpha == 0), 'foreground needs to have some transparency: {}'.format(foreground_path)
8
~/anaconda3/envs/ctlearn/lib/python3.6/site-packages/PIL/Image.py in getchannel(self, channel)
2082 'The image has no channel "{}"'.format(channel))
2083
-> 2084 return self._new(self.im.getband(channel))
2085
2086 def tell(self):
ValueError: band index out of range
Таким образом, код виновника - np.array(foreground.getchannel(3))
, который, как я полагаю, должен получить альфа-канал целевого изображения.
Это наводит меня на мысль, что в рассматриваемом изображении отсутствует альфа-канал.Но у рассматриваемого изображения действительно есть альфа-слой.
Что происходит?