[Python] Masquez l'image dans un cercle à l'aide de Pillow

introduction

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 ** maksed

Image à utiliser

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/) Horse

L'image utilisée pour le masque est cette image. Image de masque noir Horse

Flux de traitement du masque

  1. 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. panel

  2. Collez l'image du masque évidée du panneau sur l'image du cheval.

code

Je vais expliquer brièvement le programme.

** L'ensemble du programme est répertorié à la fin. ** **

Chargement de l'image du masque

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éation de panneaux

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)

Tracez un cercle

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)

Creuser l'image et la masquer

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 ")
maksed

Code entier

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 ")

URL de référence

Une explication détaillée des arguments est introduite. note.nkmk.me

Recommended Posts

[Python] Masquez l'image dans un cercle à l'aide de Pillow
Essayez une recherche similaire de recherche d'images à l'aide du SDK Python [Recherche]
Créer un fichier GIF en utilisant Pillow en Python
Découpez une partie de la chaîne à l'aide d'une tranche Python
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~
L'image est Namekuji
[python] Remplacez le nom du fichier image par un numéro de série
Collez l'image dans un fichier Excel en utilisant l'openpyxl de Python
Générer une image Docker à l'aide de Fabric
Transformez votre téléphone intelligent Android en serveur Web à l'aide de python.
Contrôlez le moteur avec un pilote de moteur en utilisant python sur Raspberry Pi 3!
Capture d'image de Firefox en utilisant Python
[Python] Utilisation d'OpenCV avec Python (filtrage d'image)
J'ai fait un Line-bot avec Python!
Recherche par image de la pellicule en utilisant Pythonista3
Créer une interface graphique python à l'aide de tkinter
[Python] Utilisation d'OpenCV avec Python (transformation d'image)
Dessiner une courbe Silverstone en utilisant Python
Essayez de modifier une nouvelle image à l'aide du modèle StyleGAN2 entraîné
Créez un lot planifié simple à l'aide de l'image Python de Docker et de parse-crontab
[Python] Faire de la fonction une fonction lambda
[Ev3dev] Créez un programme qui capture LCD (écran) en utilisant python
Je viens d'effacer l'objet en utilisant la réparation d'image (inpaint) (OpenCV: Python)
Extraire le fichier targz en utilisant python
Essayez d'utiliser le module Python Cmd
[Python] Une fonction simple pour trouver les coordonnées du centre d'un cercle
J'ai exécuté GhostScript avec python, divisé le PDF en pages et l'ai converti en image JPEG.
Script Python qui collecte automatiquement des images typiques à l'aide de la recherche d'images Bing
[EV3 x Python] Diffusez les images de la caméra sur votre PC en utilisant mjpg-streamer.
[Mac] Créez un environnement Python 3.x à la vitesse la plus rapide à l'aide de Docker
Un programme python qui redimensionne une vidéo et la transforme en image
Créer un enregistrement avec des pièces jointes dans KINTONE à l'aide du module de requêtes Python
Une note utile lors de l'utilisation de Python après une longue période
Essayez d'utiliser l'API Wunderlist en Python
Essayez d'utiliser l'API Kraken avec Python
Derrière le flyer: utiliser Docker avec Python
Créez une image factice avec Python + PIL.
Ecrire le test dans la docstring python
Python: Application de la reconnaissance d'image à l'aide de CNN
Tweet à l'aide de l'API Twitter en Python
Créer un graphique à l'aide du module Sympy
Rechercher le labyrinthe avec l'algorithme python A *
[Python] Créer un environnement Batch à l'aide d'AWS-CDK
Exécuter l'interpréteur Python dans le script
[GIMP] [Python-Fu] Divisez l'image en épées
Scraping de sites Web à l'aide de JavaScript en Python
[Python] Gratter une table avec Beautiful Soup
J'ai essayé de jouer avec l'image avec Pillow
Traitez facilement des images en Python avec Pillow
Dessinez une structure arborescente en Python 3 à l'aide de graphviz
L'histoire du traitement A du blackjack (python)
Ajouter une couche à l'aide du backend Keras
Un programme qui utilise Python pour lire des fichiers indésirables
[Python] Une barre de progression sur le terminal
Introduisez Graphviz dans un environnement Python portable