Определение цветов пикселей на картинке

С помощь языка python мне нужно сделать программу, которая будет

  1. Брать с сайта картинку
  2. Определять какой процент пикселей на картинке - белые

Как делать первую часть я знаю, но как быть со второй? Какие есть библиотеки для работы с картинками и функциями определения цвета пикселей в rgb?


Ответы (1 шт):

Автор решения: greymaster

Решение с использованием библиотеки PIL

import os

from PIL import Image
import requests

# url_img = "https://mobimg.b-cdn.net/v3/fetch/c4/c493aac67877288476b0fc52d55f55cf.jpeg"  # картинка с сайта
url_img = "https://plitka-sdvk.ru/i/plitka/Urbanist/Keramogranit-120x60/139985.jpg"


img = requests.get(url_img)

with open("tmp.jpeg", "wb+") as file:
    file.write(img.content)  # Для сохранения на компьютер

im = Image.open("tmp.jpeg")
pixels = im.load()  # список с пикселями
x, y = im.size  # ширина (x) и высота (y) изображения

white_pix = 0
another_pix = 0

for i in range(x):
    for j in range(y):

        color = pixels[i, j]  # содержит кортеж из нескольких значений цвета, в зависимости от формата изображения

        flag = True  # Флаг, является ли пиксель белым
        for q in range(3):
            # проверка чисто белых пикселей, для оттенков нужно использовать диапазоны
            if pixels[i, j][q] != 255:  # pixels[i, j][q] > 240  # для оттенков
                flag = False

        if flag:
            white_pix += 1
        another_pix += 1

try:
    print(another_pix, white_pix)
    print(round(white_pix / another_pix * 100, 3))
except ZeroDivisionError:
    print("Белых пикселей нет")

os.remove("tmp.jpeg")

→ Ссылка