Créer un canvas sans la bibliothèque PIL avec Pillow et alternatives pertinentes

Anciennement PIL, Pillow est une bibliothèque open source spécifiquement conçue pour le traitement d’images via Python. À l’origine conçue par Fredrik Lundh en 1995, Python Imaging Library abrégé PIL fut la bibliothèque de référence pour le traitement d’images sur Python. Contrairement à d’autres librairies ne proposant accessoirement que quelques méthodes de traitement d’image, Pillow est presque exclusivement centrée sur ce domaine. Au total, pas moins de 30 formats image sont supportés par ce module.

L’un des principaux attraits de Pillow est sa facilité de prise en main. Les notations sont naturelles, les classes et les méthodes sous-jacentes ont été bien pensées pour faciliter l’expérience de l’utilisateur. C’est cet aspect user-friendly que nous allons mettre en valeur dans cet article introductif. Au sein de cette vaste bibliothèque subsiste une classe sobrement intitulée Image. Celle-ci contient tout une collection de méthodes essentielles pour démarrer le traitement d’images.

Premiers pas avec Pillow

La première étape consiste à importer la classe Image depuis le module PIL. Ensuite, nous déclarons une variable im de type Image via la méthode open(). La troisième ligne permet d’afficher sur la console quelques propriétés du fichier, disponibles dans les différents attributs de la classe : le format, la taille et le mode (échelle de gris, RGB, CMYK…) et enfin, la dernière ligne permet d’afficher l’image en question. Ce snippet permet de convertir un fichier en format JPG. Pour spécifier un format en particulier, il faut le mentionner dans le deuxième paramètre de la fonction save().

À chaque figure est associée la seule et unique ligne de code nécessaire pour recréer l’image affichée. Le contraste définit l’échelle relative de différence entre les parties claires et foncées d’une image. La balance des blancs (color balance) ajuste l’intensité des couleurs selon l’éclairage. La luminosité impacte la clarté globale de l’image, contrairement au contraste. Si vous souhaitez poursuivre votre aventure dans la vision par ordinateur, Pillow et le module ImageFilter constituent une très bonne porte d’entrée vers cet univers pour le moins attrayant.

Fonctionnalités clés et modules associés

C’est dans ce module que nous retrouvons les opérations de flou gaussien, d’amélioration des détails et de gaufrage (embossing). Pillow offre une large palette d’outils pour le graphisme 2D via le module PIL.ImageDraw, permettant de dessiner diverses formes géométriques, ainsi que du texte, pour créer ou retoucher des images. Le module PIL.ImageQt permet de créer des QImage directement utilisables par le binding PyQt. En effet, il dispose d’une classe du même nom qui est une sous-classe de QtGui.QImage, rendant possible le passage direct à l’API PyQt.

Le code suivant illustre une utilisation combinée, permettant à l’utilisateur de visualiser une image, de la tourner et de la flouter. Le traitement de l’image est réalisé à l’aide de Pillow, tandis que l’interface utilisateur utilise l’API PyQt. Pillow est une bibliothèque relativement complète qui offre la possibilité de manipuler des images avec une grande simplicité. Pour conclure, les quelques exemples abordés dans cet article offrent un bon aperçu du fonctionnement de Pillow, mais ne couvrent en aucun cas toutes ses possibilités.

Notes sur les flux et formats

Affichage d’images: Création et affichage d’images via le module PIL.ImageTk, ou PIL.ImageWin sous Windows. Traitement d’images: Offre un support pour quelques fonctions de bases telles que le filtrage, la convolution ou encore la conversion d’espaces couleurs. La bibliothèque utilise le principe d’images matricielles, c’est-à-dire que chaque élément de la matrice représente un point avec une couleur associée (un pixel). Les images sont constituées de bandes de données (une ou plusieurs, pour autant que celles-ci aient toutes les mêmes dimensions et profondeurs). Un exemple commun de bandes est celles sous la forme RGBA, qui sépare les informations sur le rouge, le vert, le bleu et la transparence. Il est ainsi possible de réaliser différentes actions qui agissent que sur une seule bande.

Modes: Ils définissent le type et la profondeur des pixels d’une image. L’exemple suivant aborde de manière simple quelques notions de bases de Pillow. Une image en couleur au format .png est récupérée et convertie en nuances de gris. Image.convert() change le mode de l’image.

Dans cet esprit, le logo de la bibliothèque Pillow peut subir diverses modifications afin de mettre en pratique quelques fonctions de la bibliothèque. Le logo est d’abord flouté à l’aide d’un filtre, puis transposé afin d’inverser la position de chaque python. Pillow utilise le concept des bandes de données, qu’il est possible de traiter séparément. Pillow fournit également des outils de base pour le graphisme 2D, et ces fonctions sont regroupées dans le module PIL.ImageDraw.

Il est possible de dessiner sur une image et Pillow fournit le module PIL.ImageQt afin de créer des QImage directement utilisables par PyQt. Convertit une image de la bibliothèque PIL en QImage.

Intégration avec d’autres technologies

Pillow est une bibliothèque relativement complète qui offre la possibilité de manipuler des images avec une grande simplicité. Le traitement de l’image peut être complété par des interfaces utilisateur utilisant PyQt5, et des flux de travail avec d’autres bibliothèques comme matplotlib ou imageio pour charger ou sauvegarder des images dans divers formats. L’interopérabilité avec ces outils permet d’étendre les scénarios de traitement et de visualisation en dehors du strict PIL/Pillow. Enfin, Pillow continue d’être une porte d’entrée accessible et puissante vers la vision par ordinateur et le traitement d’images, même si des projets plus récents peuvent être envisagés selon les besoins spécifiques.

visualisation et traitement d’image Pillow

Comprendre l'interface graphique QT avec Python (la base)

Tableau synthèse des notions essentielles

ConceptDescriptionExemple rapide
ImageClasse centrale contenant des méthodes de traitementImage.open()
ModesType et profondeur des pixels (RGB, RGBA, L, CMYK…)Image.convert()
BandesCanaux de couleur ou transparence RGBA, séparation et traitement séparé
FiltersFlou, sharpen, emboss, etc.ImageFilter.GaussianBlur
DrawOutils de dessin et textePIL.ImageDraw

En héritant des concepts de PIL et en s’adaptant à Pillow, on peut créer un canvas dynamique pour des applications simples de traitement d’images ou des interfaces utilisateur graphiques légères. Les possibilités s’étendent des manipulations basiques à l’intégration graphique via PyQt et la conversion vers d’autres formats pour le déploiement ou la démonstration visuelle.

tags: #creer #canvas #sans #la #bibliotheque #pil