Bibliothèque PIL de traitement d'images Python
Cet article vous apporte des connaissances pertinentes sur python, qui organise principalement les problèmes liés à la bibliothèque PIL. La bibliothèque PIL est une bibliothèque tierce dotée de puissantes capacités de traitement d'image, qui contient non seulement des opérations riches en pixels et en couleurs. utilisé pour l'archivage d'images et le traitement par lots. Jetons-y un coup d'œil, j'espère que cela sera utile à tout le monde.
Apprentissage recommandé : python
Utilisation de la bibliothèque PIL
Points clés : La bibliothèque PIL est une bibliothèque tierce dotée de puissantes capacités de traitement d'image. Elle contient non seulement de riches fonctions d'opération de pixels et de couleurs, mais également. également pour l'archivage d'images et le traitement par lots.
1. Présentation de la bibliothèque PIL
La bibliothèque PIL (Python Image Library) est une bibliothèque tierce du langage Python et doit être installée via l'outil pip. La méthode d'installation de la bibliothèque PIL est la suivante. A noter que le nom de la bibliothèque d'installation est oreiller.
:\>pip install pillow #或者 pip3 install pillow
La bibliothèque PIL prend en charge le stockage, l'affichage et le traitement des images. Elle peut gérer presque tous les formats d'image et effectuer des opérations telles que la mise à l'échelle, le recadrage, la superposition et l'ajout de lignes, d'images et de texte aux images.
La bibliothèque PIL peut répondre principalement aux besoins en énergie cinétique de l'archivage et du traitement d'images
(1) Archivage d'images : traitement par lots d'images, génération d'aperçus d'images, conversion de format d'image, etc.
(2) Traitement d'image : traitement d'image de base, traitement des pixels, traitement des couleurs, etc.
Selon les fonctions, la bibliothèque PIL comprend un total de 21 classes liées aux images. Ces classes peuvent être considérées comme des sous-bibliothèques
ou des modules dans la bibliothèque PIL.
Image, ImageChops, ImageColor, ImageCrackCode, ImageDraw.ImageEnhance, ImageFile, ImageFilelO, ImageFilter, ImageFont, ImageGL, ImageGrab, Imagemath, ImageOps, ImagePalette, ImagePath.ImageQt, ImageSequence, ImageStat ImageTk, ImageWin
Concentrez-vous sur les sous- systèmes de la bibliothèque PIL Bibliothèque : Image, ImageFilter, ImageEnhance.
2. Analyse de classe d'image de la bibliothèque PIL
Image est la classe la plus importante de PIL. Elle représente une image. La méthode d'introduction de cette classe est la suivante :
>>>from PIL import Image
Dans PIL, n'importe quel fichier image peut utiliser l'image. objet express. Les méthodes de lecture et de création d'images de la classe Image sont les suivantes (5 au total) :
Méthode | Description |
---|---|
Image.open(filename) | Charger les fichiers image selon les paramètres |
Image. new(mode, size, color) | Créez une nouvelle image basée sur les paramètres donnés |
Image.open(StringlO.StringlO(buffer)) | Obtenez l'image à partir d'une chaîne |
Image.frombytes( mode, size, data) | Créez une image basée sur des données de pixels |
Image.verify() | Vérifiez l'intégrité du fichier image et renvoyez une exception |
Lors de l'ouverture de l'image fichier via Image, le raster de l'image Les données de format ne seront pas décodées ou chargées directement. Le programme lit uniquement les informations de métadonnées dans l'en-tête du fichier image. Cette partie des informations identifie le format, la couleur, la taille, etc. de l'image. Par conséquent, l’ouverture d’un fichier sera très rapide, quelle que soit la manière dont l’image est stockée et compressée.
Pour charger un fichier image, le formulaire le plus simple est le suivant, après quoi toutes les opérations fonctionneront sur im.
>>>from PIL import Image>>>im = Image.open ("a.jpg")
Lors de l'utilisation du mode interactif IDLE pour traiter des fichiers image, il est recommandé d'utiliser le chemin complet du fichier ; si vous utilisez le format de fichier Python, il est recommandé d'utiliser des chemins relatifs et de placer les fichiers et programmes dans un répertoire.
La classe Image a 4 attributs communs pour le traitement des images, comme indiqué dans le tableau (4 au total)
Attributes | Description |
---|---|
Image.format | Identifie le format ou la source de l'image, si l'image n'est pas lue à partir du fichier, la valeur est Aucune |
Image.mode | Le mode couleur de l'image, "L" est une image en niveaux de gris, "RVB" est une image en vraies couleurs et "CMJN" est une image publiée |
Taille de l'image | Densité et hauteur de l'image, l'unité est le pixel (px), la valeur de retour est un tuple (tuple) |
Image.palette | Propriété Palette, renvoie une ImagePalette. type |
View Les propriétés des fichiers image qui ont été lus sont les suivantes :
>>>print (im. format, im.size, im.mode)JPEG (900, 598) RGB
Image peut également lire des fichiers image de séquence, notamment GIF, FLI, FLC, TIFF et d'autres fichiers au format. La méthode open() charge automatiquement la première image de la séquence lors de l'ouverture d'une image, et les méthodes seek() et tell() peuvent être utilisées pour se déplacer entre différentes images.
Méthodes d'opération d'image séquentielle de la classe Image (2 au total) :
Méthode | Description |
---|---|
Image.seek(frame) | Sauter et renvoyer le cadre spécifié dans l'image |
Image.tell() | renvoie le numéro de séquence de l'image actuelle |
【实例1】GIF文件图像提取
对一个GIF格式动态文件,提取其中各帧图像,并保存为文件。
from PIL import Image#读入一个GIF文件im = Image.open("pybit.gif")try: im.save('picframe{:02d).png'.format(im.tell())) while True: im.seek(im.tel1 ()+1) im.save('picframe{:02d).png'.format(im.tell()))except:print("处理结束")
实例1展示了一种采用try-except编写程序的方法,通过seek()方法和save()方法配合提取GIF图像格式的每一帧,并保存为文件。
Image类的图像转换和保存方法 (共3个) 如表所示。
方法 | 描述 |
---|---|
Image.save(filename, format) | 将图像保存为filename文件名,format是图片格式 |
Image.convert(mode) | 使用不同的参数,转换图像为新的模式 |
Image.thumbnail(size) | 创建图像的缩略图,size是缩略图尺寸的二元元组 |
其中,save()方法有两个参数:文件名filename和图像格式format。如果调用时不指定保存格式,如微实例1,PIL将自动根据文件名filename后缀存储图像;如果指定格式,则按照格式存储。搭配采用open()和save()方法可以实现图像的格式转换,例如,将 jpg格式转换为png格式」代码如下。需要注意,Image 类的 save()方法主要用于保存文件到硬盘,PIL库还提供了功能更强大的格式转换方法。
im = Image.open("a.jpg")im.save("a.png")
Image类可以缩放和旋转图像,其中,rotate(方法以逆时旋转的角度值作为参数来旋转图像。
Image类的图像旋转和缩放方法(共2个):
方法 | 描述 |
---|---|
Image.resize(size) | 按size大小调整图像,生成副本 |
Image.rotate(angle) | 按angle角度旋转图像,生成副本 |
Image类能够对每个像素点或者一幅RGB图像的每个通道单独进行操作。split()方法能够将RGB 图像各颜色通道提取出来;
merge()方法能够将各独立通道再合成一幅新的图像。
lmage类的图像像素和通道处理方法(共4个):
方法 | 描述 |
---|---|
Image.point(func) | 根据函数func的功能对每个元素进行运算,返回图像副本 |
Image.split() | 提取RGB图像的每个颜色通道,返回图像副本 |
Image.merge(mode,bands) | 合并通道,其中mode表示色彩,bands表示新的色彩通道 |
Image.blend(im1,im2,alpha) | 将两幅图片iml和im2按照如下公式插值后生成新的图像:im1 (1.0-alpha) + im2 alpha |
【实例2】图像的颜色交换
交换图像中的颜色。可以通过分离RGB图片的3个颜色通道实现颜色交换。
from PIL import Imageim = Image.open('a.jpg')r, g, b = im.split()om = Image.merge("RGB" , (b, g, r))om.save('aBGR.jpg')
运行结果:
原图:
操作图像的每个像素点需要通过函数实现,可以采用(lambda)函数和point()方法,例子如下,显示效果如图7所示。
>>>im=Image.apen('a.jpg')#打开文件>>>>r,g,b=im.splitO#获得RGB通道数据>>>>newg=g.point(lambda i:i*0.9)#将G通道颜色值变为原来的0.9>>>>newb=b.point(lambda i:i>>>om=Image.merge(im.mode,(r,newg,newb)#将3个通道合成为新图>>>>om.save('new_a.jpg')#输出图片
3.图像的过滤和增强
PIL库的ImageFilter类和ImageEnhance类提供了过滤图像和增强图像的方法。
ImageFilter类共提供10种预定义图像过滤方法(共10个):
方法表示 | 描述 |
---|---|
ImageFilter.BLUR | 图像的模糊效果 |
ImageFilter.CONTOUR | 图像的轮廓效果 |
ImageFilter.DETAIL | 图像的细节效果 |
ImageFilter.EDGE_ENHANCE | 图像的边界加强效果 |
ImageFilter.EDGE_ENHANCE_MORE | 图像的阈值边界加强效果 |
ImageFilter.EMBOSS | 图像的浮雕效果 |
ImageFilter.SMOOTHL | 图像的平滑效果 |
ImageFilter.FIND_EDGES | 图像的边界效果 |
ImageFilter.SMOOTH_MORE | 图像的阈值平滑效果 |
ImageFilter.SHARPEN | 图像的锐化效果 |
利用Image类的filter()方法可以使用ImageFilter类,使用方式如下:
Image.filter(ImageFilter.fuction)
【实例3】图像的轮廓获取。
获取图像的轮廓,代码如下,程序执行效果如图所示,图片变得更加抽象、更具想象空间!
from PIL import Imagefrom PIL import ImageFilterim = Image.open('a.jpg')om = im.filter(ImageFilter.CONTOUR)om.save('aContour.jpg')
运行结果:
原图:
ImageEnhance类提供了更高级的图像增强功能,如调整色彩度、亮度、对比度、锐化等。
ImageEnhance类的图像增强和滤镜方法(共5个):
方法 | 描述 |
---|---|
ImageEnhance.enhance(factor) | 对选择属性的数值增强factor倍 |
ImageEnhance.Color(im) | 调整图像的颜色平衡 |
ImageEnhance.Contrast(im) | 调整图像的对比度 |
ImageEnhance.Brightness(im) | 调整图像的亮度 |
ImageEnhance.Sharpness(im) | 调整图像的锐度 |
【实例4】图像的对比度增强。
增强图像的对比度为初始的20倍。代码如下,程序执行效果如图7所示。
from PIL import Imagefrom PIL import ImageEnhanceim = Image.open('a.jpg')om = ImageEnhance.Contrast(im)om.enhance(20).save(aEnContrast.jpg')
运行结果:
原图:
推荐学习:python
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

PHP et Python ont leurs propres avantages et inconvénients, et le choix dépend des besoins du projet et des préférences personnelles. 1.Php convient au développement rapide et à la maintenance des applications Web à grande échelle. 2. Python domine le domaine de la science des données et de l'apprentissage automatique.

Python et JavaScript ont leurs propres avantages et inconvénients en termes de communauté, de bibliothèques et de ressources. 1) La communauté Python est amicale et adaptée aux débutants, mais les ressources de développement frontal ne sont pas aussi riches que JavaScript. 2) Python est puissant dans les bibliothèques de science des données et d'apprentissage automatique, tandis que JavaScript est meilleur dans les bibliothèques et les cadres de développement frontaux. 3) Les deux ont des ressources d'apprentissage riches, mais Python convient pour commencer par des documents officiels, tandis que JavaScript est meilleur avec MDNWEBDOCS. Le choix doit être basé sur les besoins du projet et les intérêts personnels.

Docker utilise les fonctionnalités du noyau Linux pour fournir un environnement de fonctionnement d'application efficace et isolé. Son principe de travail est le suivant: 1. Le miroir est utilisé comme modèle en lecture seule, qui contient tout ce dont vous avez besoin pour exécuter l'application; 2. Le Système de fichiers Union (UnionFS) empile plusieurs systèmes de fichiers, ne stockant que les différences, l'économie d'espace et l'accélération; 3. Le démon gère les miroirs et les conteneurs, et le client les utilise pour l'interaction; 4. Les espaces de noms et les CGROUP implémentent l'isolement des conteneurs et les limitations de ressources; 5. Modes de réseau multiples prennent en charge l'interconnexion du conteneur. Ce n'est qu'en comprenant ces concepts principaux que vous pouvez mieux utiliser Docker.

Dans VS Code, vous pouvez exécuter le programme dans le terminal via les étapes suivantes: Préparez le code et ouvrez le terminal intégré pour vous assurer que le répertoire de code est cohérent avec le répertoire de travail du terminal. Sélectionnez la commande Run en fonction du langage de programmation (tel que Python de Python your_file_name.py) pour vérifier s'il s'exécute avec succès et résoudre les erreurs. Utilisez le débogueur pour améliorer l'efficacité du débogage.

Python excelle dans l'automatisation, les scripts et la gestion des tâches. 1) Automatisation: La sauvegarde du fichier est réalisée via des bibliothèques standard telles que le système d'exploitation et la fermeture. 2) Écriture de script: utilisez la bibliothèque PSUTIL pour surveiller les ressources système. 3) Gestion des tâches: utilisez la bibliothèque de planification pour planifier les tâches. La facilité d'utilisation de Python et la prise en charge de la bibliothèque riche en font l'outil préféré dans ces domaines.

VS Code peut fonctionner sur Windows 8, mais l'expérience peut ne pas être excellente. Assurez-vous d'abord que le système a été mis à jour sur le dernier correctif, puis téléchargez le package d'installation VS Code qui correspond à l'architecture du système et l'installez comme invité. Après l'installation, sachez que certaines extensions peuvent être incompatibles avec Windows 8 et doivent rechercher des extensions alternatives ou utiliser de nouveaux systèmes Windows dans une machine virtuelle. Installez les extensions nécessaires pour vérifier si elles fonctionnent correctement. Bien que le code VS soit possible sur Windows 8, il est recommandé de passer à un système Windows plus récent pour une meilleure expérience de développement et une meilleure sécurité.

VS Code est le code Visual Studio Nom complet, qui est un éditeur de code multiplateforme gratuit et open source et un environnement de développement développé par Microsoft. Il prend en charge un large éventail de langages de programmation et fournit une mise en surbrillance de syntaxe, une complétion automatique du code, des extraits de code et des invites intelligentes pour améliorer l'efficacité de développement. Grâce à un écosystème d'extension riche, les utilisateurs peuvent ajouter des extensions à des besoins et des langues spécifiques, tels que les débogueurs, les outils de mise en forme de code et les intégrations GIT. VS Code comprend également un débogueur intuitif qui aide à trouver et à résoudre rapidement les bogues dans votre code.

VS Code peut être utilisé pour écrire Python et fournit de nombreuses fonctionnalités qui en font un outil idéal pour développer des applications Python. Il permet aux utilisateurs de: installer des extensions Python pour obtenir des fonctions telles que la réalisation du code, la mise en évidence de la syntaxe et le débogage. Utilisez le débogueur pour suivre le code étape par étape, trouver et corriger les erreurs. Intégrez Git pour le contrôle de version. Utilisez des outils de mise en forme de code pour maintenir la cohérence du code. Utilisez l'outil de liaison pour repérer les problèmes potentiels à l'avance.
