Entfernen Sie hintergrund-Farbe aus einem Bild mit Python/PIL

Ich habe versucht, diese zu arbeiten und bin auch wirklich Mühe, so wäre sehr dankbar für etwas Hilfe.

Mit dem nachstehenden code, den ich ändern will die Funktionen mit den angegebenen RGB-Werte in weiß angezeigt, und alle anderen features, die im Bild schwarz ist (also im Grunde die Extraktion der Merkmale aus dem Bild. Leider kann ich zwar machen, die Funktionen, die ich will 'Extrakt' in Ordnung, wenn ich versuche, entfernen Sie die hintergrund-Farben (ich hatte versucht zu verwenden

mask2 = ((red != r1) & (green != g1) & (blue != b1))
data[:,:,:4][mask2] = [rb, gb, bb, ab]

aber das scheint so zu wählen, werden alle Pixel, außer jene mit rot == r1 ODER grün == g1 etc, und ließ mich mit einem Hintergrundbild, das ist ganz 'laut'.) Kennt jemand einen Weg, um buchstäblich extrahieren, diese Pixel mit der angegebenen RGB-Werte oder einen besseren Weg, um färbe den hintergrund Pixel?

Dank

import numpy as np
from PIL import Image

im = Image.open('/home/me/nh09sw.tif')
im = im.convert('RGBA')
data = np.array(im)

r1, g1, b1 = 246, 213, 139 # Original value
rw, gw, bw, aw = 255, 255, 255, 255 # Value that we want to replace features with
rb, gb, bb, ab = 0, 0, 0, 255 #value we want to use as background colour

red, green, blue, alpha = data[:,:,0], data[:,:,1], data[:,:,2], data[:,:,3]

mask = ((red == r1) & (green == g1) & (blue == b1))
data[:,:,:4][mask] = [rw, gw, bw, aw]

im = Image.fromarray(data)

im.save('/home/me/nh09sw_recol.tif')

InformationsquelleAutor hansolo | 2014-01-19

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.