Как получить цвет всех пикселей в области в Python - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь написать программу для Linux, которая делает что-то, если пиксели в области не все одного цвета, например:

if color not "255, 255, 255":
    #do something

это то, что у меня есть для одного пикселя:

import time, pyautogui
time.clock()
image = pyautogui.screenshot()
color = image.getpixel((1006, 553))
print(time.clock())
print(color)

Я знаю, как получить цвет пикселя, используя .getpixel(), но он получает только один пиксель

В принципе, как я могу получить цвет области пикселей, когдая знаю, что все пиксели в этой области одного цвета.

Кроме того, как можно быстрее, например, 0,5 с или ниже.

1 Ответ

0 голосов
/ 17 октября 2019

Я продолжаю рекомендовать это, но библиотека scikit-image довольно хороша, и у них есть действительно солидная документация и примеры. Я бы порекомендовал эту комбинацию и использовать массивы напрямую. Это намного быстрее при работе непосредственно с пикселями. Вам нужно будет преобразовать PIL-изображение в простой массив ... но это должно работать с этим:

import pyautogui
import numpy as np

image = pyautogui.screenshot()
np_image = np.array(image)

Вы можете нарезать изображение:

red_slice = np_image[0:50, 0:50,0]
red_mask = red_slice == 200

Это даст вам значения для красного в верхней правой области 50x50 пикселей. red_mask - это массив значений True / False, равняется ли каждое значение красного в этой области 200. Это может быть повторено для других каналов, как вы считаете нужным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...