Нахождение «уровня черного» в пикселе на изображении в градациях серого - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь вычислить процент черного цвета в пикселе. Например, допустим, у меня пиксель 75% черного цвета, поэтому серый. У меня есть значения RGBA, так как я могу получить уровень черного?

Я уже завершил получение каждого пикселя и заменил его новым значением RGBA и попытался использовать некоторую логику RGBA, но безрезультатно.

#Gradient Testing here
from PIL import Image
picture = Image.open("img1.png")

img = Image.open('img1.png').convert('LA')
img.save('greyscale.png')

# Get the size of the image

width, height = picture.size

# Process every pixel

for x in range(width):
   for y in range(height):

       #Code I need here
       r1, g1, b1, alpha = picture.getpixel( (x,y) )
       r,g,b = 120, 140, 99
       greylvl = 1 - (alpha(r1 + g1 + b1) / 765) #Code I tried

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

1 Ответ

0 голосов
/ 28 июня 2019

Я не совсем уверен, для чего нужен формат "LA", в который вы пытаетесь конвертировать;Вместо этого я бы попробовал "L".

Попробуйте этот код: (Убедитесь, что вы используете Python 3.)

from PIL import Image

picture = Image.open('img1.png').convert('L')
width, height = picture.size

for x in range(width):
    for y in range(height):
        value = picture.getpixel( (x, y) )
        black_level = 1 - value / 255
        print('Level of black at ({}, {}):  {} %'.format(x, y, black_level * 100))

Это то, что вы ищете?

...