python 3 как найти координаты области с одинаковыми пикселями если знаю их цвет?

Не могу понять как найти области с одинаковыми пикселями и получить координаты этих областей? Пробовал циклами перебирать все пиксели, но выходит слишком долго.

Изображение где требуется искать область с белыми пикселями введите сюда описание изображения

Получение координат вот этих областей (в рамки выделил для наглядности) введите сюда описание изображения

Код целиком


from PIL import Image, ImageChops
from pathlib import Path
from mss import mss
import numpy as np
import pyautogui
import keyboard
import time


class Object_search:
    def __init__(self):
        self.BASE_DIR = Path(__file__).resolve().parent

    def screenshot(self):
        image_1 = pyautogui.screenshot(region = (0, 0, 1920, 1080))
        time.sleep(0.1)
        image_2 = pyautogui.screenshot(region = (0, 0, 1920, 1080))
        return image_1, image_2

    def comparison(self, image_1, image_2):
        result = ImageChops.difference(image_1, image_2)
        result = result.convert('L')
        result = result.point(lambda x: 0 if x < 1 else 255, '1')
        result.save(r'{}\data\screenshot\screen.png'.format(self.BASE_DIR))
        return result

while True:
    if keyboard.is_pressed('5'):
        print('screenshot')
        image = Object_search().screenshot()
        time.sleep(0.1)
    elif keyboard.is_pressed('6'):
        print('comparison')
        comparison = Object_search().comparison(image[0], image[1])
        time.sleep(0.1)
    elif keyboard.is_pressed('8'):
        print('exit')
        time.sleep(0.1)```

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

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

В OpenCV бы я делал так - слил вместе рассыпавшиеся пикселы объекта с помощью морфологического преобразования замыкания (closing = dilation + erosion).

Затем выделить connected components, для каждого доступен окружающий прямоугольник. Наверное, подобное есть и в PIL

→ Ссылка