Використовуйте Imagemagick, щоб знайти ділянки подібного кольору

Чи є спосіб використовувати ImageMagick (або щось подібне, все, що буде працювати!), Щоб знайти області зображення, де пікселі поряд один з одним мають однаковий колір?

Спасибі заздалегідь,

1
Який контекст питання? Звичайно, ви можете використовувати прикладну програму для обробки зображень (Gimp, PS, тощо), щоб вибрати піксель за допомогою миші та розширити вибір до суміжних областей аналогічного кольору. Але в контексті програми, що ви очікуєте повернути абоненту після того, як функція "знаходить області зображення"?
додано Автор Dave, джерело

1 Відповіді

Photoshop, Gimp та безліч інших процесорів обробки зображень роблять це для вас. Програмуванням тут є код у python, який виконує це:

from PIL import Image, ImageDraw

def inImage(im, px):
    x,y = px
    return x < im.size[0] and y < im.size[1] and x > 0 and y > 0

def meetsThreshold(im, px, st, threshold):
    color = im.getpixel(px)
    similar = im.getpixel(st)
    for cPortion, sPortion in zip(color,similar):
        if abs(cPortion - sPortion) > threshold:
            return False
    return True

def floodFill(im, fillaroundme, fillWith, meetsThresholdFunction):
    imflooded = im.copy()
    imflooded.putpixel(fillaroundme, fillwith)
    processed = []
    toProcess = [fillaroundme]
    while len(toProcess) > 0:
        edge = toProcess.pop()
        processed.append(edge)
        x, y = edge
        for checkMe in ((x+1, y), (x-1, y), (x, y+1), (x, y-1)):
            if inImage(im, checkMe) and meetsThresholdFunction(im, edge, checkMe):
                imflooded.putpixel(checkMe, fillWith)            
                if checkMe not in toProcess and checkMe not in processed:
                    toProcess.append(checkMe)
        processed.append(edge)
    return imflooded


im = Image.open(r"tardis.jpg")
filled = floodFill(im, (120, 220), (255, 0, 0), lambda im, px, st: meetsThreshold(im, px, st, 10))

filled.show()

I got the tardis.jpg from here

1
додано
ІТ КПІ - Python
ІТ КПІ - Python
625 учасників

Канал обговорень про всякі штуки зі світу пайтону. Прохання: 0. мати повагу одне до одного; 1. не матюкатися в сторону людей; 2. не захламляти тред повідомленнями по одному слову;