Voici le code qui utilise le ** Pillow ** de Python pour masquer la zone autre que le centre de l'image dans un cercle.
** Exemple d'image après traitement du masque **
La zone autre que le visage du cheval est masquée et peinte en noir en cercle. [Image du cheval] (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/)
L'image utilisée pour le masque est cette image. Image de masque noir
Générez un panneau dans lequel la partie masquée (autre que le visage du cheval) est blanche et la partie sur laquelle le masquage n'est pas appliqué (partie du visage du cheval) est noire. Le cadre de l'image est blanc et ne peut pas être vu, mais il a la même taille d'image que l'image du cheval.
Collez l'image du masque évidée du panneau sur l'image du cheval.
Je vais expliquer brièvement le programme.
** L'ensemble du programme est répertorié à la fin. ** **
L'image du masque est également chargée en fonction de la taille de l'image du cheval.
Charger l'image
from PIL import Image,ImageDraw
#Chargez l'image du cheval
img = Image.open("horse.jpg ")
#Chargez l'image du masque en fonction de l'image du cheval
mask_width = img.size[0]
mask_height = img.size[1]
black_mask=Image.open("black.jpg ").resize((mask_width,mask_height))
Créez un panneau (circle_mask) de la même taille que l'image du masque noir et dessinez un cercle dessus. Lors de la création du panneau, "L": image en échelle de gris 8 bits est utilisée.
L'image de masque peut être utilisée lorsqu'elle a la même taille que l'image collée et que le mode est les trois types suivants. Image 1: 1 bit (image binaire) L: image en échelle de gris 8 bits RGBA: Image avec canal alpha
Lorsque l'image du masque est en échelle de gris 8 bits (mode = 'L'), 0 (noir) signifie 100% d'image de base, 255 (blanc) signifie 100% d'image collée et 2 images correspondent à la valeur intermédiaire. Est mélangé.
Création de panneaux
#Dessinez un cercle sur le panneau
circle_mask = Image.new("L", black_mask.size, 255)
draw = ImageDraw.Draw(circle_mask)
Notez que le cercle est dessiné à l'aide de la méthode de l'ellipse, mais vous passez les coordonnées du cadre de délimitation (en bas à gauche et en bas à droite).
Dessiner un cercle
#Coordonnées de la boîte englobante du cercle
start_x = 600
start_y = 200
width = 900
height = 900 #Si vous voulez faire un cercle parfait, la même valeur de largeur
end_x = start_x + width
end_y = start_y + height
#dessin
draw.ellipse(((start_x, start_y),(end_x, end_y)), fill=0)
Traitement du masque
#Panneau circulaire(circle_mask)En tant que masque, image de masque noir(black_mask)À l'image du cheval
img.paste(black_mask, (0, 0), circle_mask)
#sauvegarder
img.save("horse_masked.jpg ")
from PIL import Image,ImageDraw
#Chargez l'image du cheval
img = Image.open("horse.jpg ")
#Chargez l'image du masque en fonction de l'image du cheval
mask_width = img.size[0]
mask_height = img.size[1]
black_mask=Image.open("black.jpg ").resize((mask_width,mask_height))
#Dessinez un cercle sur le panneau
circle_mask = Image.new("L", black_mask.size, 255)
draw = ImageDraw.Draw(circle_mask)
#Coordonnées de la boîte englobante du cercle
start_x = 600
start_y = 200
width = 900
height = 900 #Si vous voulez faire un cercle parfait, la même valeur de largeur
end_x = start_x + width
end_y = start_y + height
#dessin
draw.ellipse(((start_x, start_y),(end_x, end_y)), fill=0)
#Panneau circulaire(circle_mask)En tant que masque, image de masque noir(black_mask)À l'image du cheval
img.paste(black_mask, (0, 0), circle_mask)
#sauvegarder
img.save("horse_masked.jpg ")
Une explication détaillée des arguments est introduite. note.nkmk.me
Recommended Posts