Я хочу загрузить (черно-белое) изображение (.png) с помощью PILLOW и получить значение серого для каждого пикселя. Позже я хочу сохранить значение для каждого пикселя в pd.DataFrame следующим образом:
x y z
0 13 0 115
1 14 0 116
2 15 0 120
3 16 3 122
4 17 4 119
, где x, y - координаты пикселей, а z - цвет. (В кадре данных должны быть сохранены только значения z, превышающие заданное значение c (например, 100)). Мой код на данный момент:
img = Image.open(...)
img = img.convert('LA')
pixels = img.load()
x =[]
y =[]
z =[]
def test(x,y):
return int(pixels[x,y][0])
size = 200
for i in range(size):
for j in range(size):
if test(j,i)>100:
x+=[j]
y+=[i]
z+=[test(j,i)]
f=(x,y,z)
df = pd.DataFrame(data=[f[0],f[1],f[2]]).T
У меня такое ощущение, что это не лучший способ решения проблемы. Также, когда у меня очень большие картинки, этот метод кажется очень медленным. Поскольку я хочу сделать кластеризацию на основе этого DataFrame, я ищу решение, которое будет очень быстрым, так как сама кластеризация займет некоторое время после этого.
Ждем предложений! :) 1009 *