python - массив np, содержащий (R, G, B, X, Y) пикселей в изображении - PullRequest
0 голосов
/ 07 марта 2020

В настоящее время я пытаюсь получить список пикселей, который содержит их значения rgb и x и y для каждого отдельного пикселя. В настоящее время я могу получить плоский список всех пикселей.

import Image
im = Image.open('Lenna.png')
pixels = np.array(im.getdata())

Это даст вам плоский список данных RGB, который выглядит следующим образом:

[(226, 137, 125), (226, 137, 125), (223, 137, 133), (223, 136, 128), (226, 138, 120), (226, 129, 116), (228, 138, 123), (227 , 134, 124), (227, 140, 127), (225, 136, 119), (228, 135, 126), (225, 134, 121),.

Однако это не даст мне любую информацию о координатах х и у каждого пикселя. Могу ли я получить какие-либо предложения?

1 Ответ

0 голосов
/ 07 марта 2020

Если вы хотите отфильтровать пиксели, вы можете проверить ответ на вопрос, упомянутый в комментариях

Если вам нужны координаты всех пикселей, может помочь следующий код:

from PIL import Image
import numpy as np


img = Image.open('/your_pic.png')
width, height = img.size
x, y = np.meshgrid(range(width), range(height))

coordinate = np.concatenate([img.getdata(), x.reshape(-1, 1), y.reshape(-1, 1)], axis=1)

Тогда вы получите ndarray с [R, G, B, Alpha, X, Y].

array([[  0,   0,   0, 255,   0,   0],
       [  0,   0,   0, 255,   1,   0],
       [  0,   0,   0, 255,   2,   0],
       ...,
       [  0,   0,   0, 255, 663, 665],
       [  0,   0,   0, 255, 664, 665],
       [  0,   0,   0, 255, 665, 665]])
...