Я работаю над проектом морфинга, который требует делоней и создания полигонов. Я должен найти, где изображение белое или черное. Я знаю, что мне нужно использовать np.where, однако, когда я это делаю, он возвращает пустой массив. Это даже верно, когда я пытаюсь найти черные пиксели на черном изображении. Я полагаю, что это может быть потому, что я передаю функции np.where изображение PIL, но когда я пытаюсь преобразовать его в массив np.array, я получаю сообщение об ошибке.
black = Image.new('1', (1440, 1080), color = "black")
draw = ImageDraw.Draw(black)
draw.polygon([point1, point2, point3], fill = "white")
vals = np.where(np.all(black == [0, 0, 0]))
print(vals)
Я ожидаю, чтобы получить все места черных пикселей.
Я был в состоянии преобразовать изображение в массив Numpy. Вот что сработало для меня:
>>> from PIL import Image
>>> import numpy as np
>>> black = Image.new('1', (1440, 1080), color="black")
>>> black_np = np.array(black)
>>> print(black_np)
[[False False False ... False False False]
[False False False ... False False False]
[False False False ... False False False]
...
[False False False ... False False False]
[False False False ... False False False]
[False False False ... False False False]]
>>> print(black_np==0)
[[ True True True ... True True True]
[ True True True ... True True True]
[ True True True ... True True True]
...
[ True True True ... True True True]
[ True True True ... True True True]
[ True True True ... True True True]]
>>> print(np.where(black_np==0))
(array([ 0, 0, 0, ..., 1079, 1079, 1079]), array([ 0, 1, 2, ..., 1437, 1438, 1439]))