Hier ist der Code, der Pythons ** Kissen ** verwendet, um den anderen Bereich als die Bildmitte in einem Kreis zu maskieren.
** Bildbeispiel nach Maskenverarbeitung **
Der andere Bereich als das Gesicht des Pferdes ist maskiert und im Kreis schwarz gestrichen. [Bild des Pferdes] (https://pixabay.com/ja/photos/%E9%A6%AC-%E5%8B%95%E7%89%A9-%E4%B9%97%E3%82%8B-%E3%83%AC%E3%82%A4%E3%82%BF%E3%83%BC%E3%83%9B%E3%83%95-4847088/)
Das für die Maske verwendete Bild ist dieses Bild. Schwarzes Maskenbild
Erstellen Sie ein Feld, in dem der maskierte Teil (außer dem Gesicht des Pferdes) weiß und der Teil, auf den der Maskierungsprozess nicht angewendet wird (Gesicht des Pferdes), schwarz ist. Der Rahmen des Bildes ist weiß und kann nicht gesehen werden, hat jedoch die gleiche Bildgröße wie das Pferdebild.
Fügen Sie das aus dem Feld ausgehöhlte Maskenbild in das Pferdebild ein.
Ich werde das Programm kurz erklären.
** Das gesamte Programm wird am Ende aufgelistet. ** ** **
Das Maskenbild wird auch entsprechend der Größe des Pferdebildes geladen.
Bild laden
from PIL import Image,ImageDraw
#Laden Sie das Bild des Pferdes
img = Image.open("horse.jpg ")
#Laden Sie das Maskenbild entsprechend dem Pferdebild
mask_width = img.size[0]
mask_height = img.size[1]
black_mask=Image.open("black.jpg ").resize((mask_width,mask_height))
Erstellen Sie ein Panel (circle_mask) mit der gleichen Größe wie das schwarze Maskenbild und zeichnen Sie einen Kreis darauf. Beim Erstellen des Bedienfelds wird "L": 8-Bit-Graustufenbild verwendet.
Das Maskenbild kann verwendet werden, wenn es dieselbe Größe wie das eingefügte Bild hat und der Modus die folgenden drei Typen hat. 1: 1bit Bild (Binärbild) L: 8-Bit-Graustufenbild RGBA: Bild mit Alphakanal
Wenn das Maskenbild eine 8-Bit-Graustufe aufweist (Modus = 'L'), bedeutet 0 (schwarz) 100% Basisbild, 255 (weiß) 100% eingefügtes Bild und 2 Bilder entsprechen dem Zwischenwert. Ist gemischt.
Panel-Erstellung
#Zeichnen Sie einen Kreis auf die Tafel
circle_mask = Image.new("L", black_mask.size, 255)
draw = ImageDraw.Draw(circle_mask)
Der Kreis wird mit der Ellipsenmethode gezeichnet. Beachten Sie jedoch, dass Sie die Begrenzungsrahmenkoordinaten (unten links und unten rechts) übergeben.
Einen Kreis zeichnen
#Koordinaten des Begrenzungsrahmens des Kreises
start_x = 600
start_y = 200
width = 900
height = 900 #Wenn Sie einen perfekten Kreis erstellen möchten, verwenden Sie den gleichen Wert für die Breite
end_x = start_x + width
end_y = start_y + height
#Zeichnung
draw.ellipse(((start_x, start_y),(end_x, end_y)), fill=0)
Maskenverarbeitung
#Kreisförmige Platte(circle_mask)Als Maske schwarzes Maskenbild(black_mask)Zum Pferdebild
img.paste(black_mask, (0, 0), circle_mask)
#sparen
img.save("horse_masked.jpg ")
from PIL import Image,ImageDraw
#Laden Sie das Bild des Pferdes
img = Image.open("horse.jpg ")
#Laden Sie das Maskenbild entsprechend dem Pferdebild
mask_width = img.size[0]
mask_height = img.size[1]
black_mask=Image.open("black.jpg ").resize((mask_width,mask_height))
#Zeichnen Sie einen Kreis auf die Tafel
circle_mask = Image.new("L", black_mask.size, 255)
draw = ImageDraw.Draw(circle_mask)
#Koordinaten des Begrenzungsrahmens des Kreises
start_x = 600
start_y = 200
width = 900
height = 900 #Wenn Sie einen perfekten Kreis erstellen möchten, verwenden Sie den gleichen Wert für die Breite
end_x = start_x + width
end_y = start_y + height
#Zeichnung
draw.ellipse(((start_x, start_y),(end_x, end_y)), fill=0)
#Kreisförmige Platte(circle_mask)Als Maske schwarzes Maskenbild(black_mask)Zum Pferdebild
img.paste(black_mask, (0, 0), circle_mask)
#sparen
img.save("horse_masked.jpg ")
Eine ausführliche Erläuterung der Argumente wird eingeführt. note.nkmk.me
Recommended Posts