np.where не работает должным образом на новом изображении

1

Я работаю над проектом морфинга, который требует делоней и создания полигонов. Я должен найти, где изображение белое или черное. Я знаю, что мне нужно использовать 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)

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

Теги:
image
np

1 ответ

0

Я был в состоянии преобразовать изображение в массив 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]))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню