base python: la mise en œuvre de la conversion de format d'image PIL bibliothèque traitement d'images Python

Cet article décrit la mise en œuvre de la conversion de format d'image PIL bibliothèque de traitement d' image Python, l'exemple de code de papier décrit en détail, a une certaine valeur de référence de l' apprentissage pour nous tous d'apprendre ou de travail, nous avons besoin d' amis ci - après la petite série apprendre ensemble
dans le traitement de l' image numérique, il a ses algorithmes de traitement spécifique pour les différents formats d'image. Donc, avant de faire le traitement d'image, nous devons penser clairement comprendre quel format d'image , ils doivent être basées sur le plan de l' algorithme et. Sur la base de cette demande, en utilisant la bibliothèque PIL python de traitement d'image pour réaliser la conversion de différents formats d'image.

Pour les images couleur, quel que soit le format d'image est PNG ou BMP ou JPG, dans la PIL, une fonction image ouverte module () à l'image en mode ouvert d'un objet est retourné « RVB ». Pour une image en niveaux de gris, quel que soit son format d'image est PNG ou BMP ou JPG, après l'ouverture, le motif est « L ».

Avant l'introduction par modules blog image pour la conversion mutuelle entre PNG, BMP, image couleur de format JPG peut être accompli par le module Open Image (), et la fonction de sauvegarde (). Plus précisément que, lorsque vous ouvrez ces images, PIL les décoder comme l'image des trois canaux « RVB ». Les utilisateurs peuvent être basés sur l'image « RVB », traiter. Traitées à l'aide de la fonction Save (), le résultat du traitement peut être enregistré en tant que PNG, BMP, JPG dans tout format. Ceci termine également la conversion entre plusieurs formats. De même, d'autres conversion de format d'image couleur peut se faire de cette façon. Bien sûr, pour différents formats d'image en niveaux de gris peut également être complétée par une voie similaire, mais il est décodé après modèle LIP est l'image « L ».

Ici, je voudrais expliquer en détail Convertir l'image Module de fonction () pour la conversion entre les différents modes d'image.

La fonction Convert () est définie sous trois formes, qui forme est définie comme suit:

im.convert(mode)⇒image
im.convert(“P”, **options)⇒image
im.convert(mode, matrix)⇒image

L'utilisation de différents paramètres, l'image courante dans un nouveau modèle, et génère une nouvelle image en tant que valeur de retour.

Dans cet article, nous l'image est une photo échantillonné de lena:

Mode "1":

>>> from PIL import Image
>>> lena = Image.open("lena.bmp")
>>> lena.mode
'RGB'
>>> lena.getpixel((0,0))
(226, 137, 125)
>>> lena_1 = lena.convert("1")
>>> lena_1.mode
'1'
>>> lena_1.size
(512, 512)
>>> lena_1.getpixel((0,0))
>>> lena_1.getpixel((10,10))
>>> lena_1.getpixel((10,120))
>>> lena_1.getpixel((130,120))
>>> lena_1.show()

Résultat: Le Insérer ici l'image Description
mode "L":

Mode « L » est une image de gris, pour chaque pixel avec ses huit bits, où 0 représente le noir et blanc 255 représente, d'autres nombres représentent différentes nuances de gris. Dans le PIL, le motif « RGB » est converti en mode « L » est converti en fonction de la formule suivante:

L = R + G * 299/1000 * 587/1000 114/1000 + B *

Ci-dessous nous lena image est convertie à l'image « L ».

>>> lena_L = lena.convert("L")
>>> lena_L.mode
'L'
>>> lena_L.size
(512, 512)
>>> lena_L.getpixel((0,0))
>>> lena.getpixel((0,0))
(226, 137, 125)
>>> lena_L.show()
>>> lena_L.save("lena_l.bmp")
>>>

Pour le premier pixel dans l'image originale est lena (197, 111, 78), qui est convertie en valeurs de gris:

197 * 111 * + 299/1000 587/1000 114/1000 + 78 * = 132,952, PIL ne prendre que la partie entière, à savoir 132.

l' image Lena_L convertie comme suit: Insérer ici l'image Description
Modèle P:

Motif « P » images couleur à 8 bits, chaque pixel est représenté par son 8 bits, avec une valeur correspondant à la palette de couleurs en fonction de l'extraction.

Ici, nous utilisons la palette de couleurs par défaut image lena dans une image « P ».

exemple:

>>> lena_P = lena.convert("P")
>>> lena_P.mode
'P'
>>> lena_P.getpixel((0,0))

Résultat: Le Insérer ici l'image Description
mode "RGBA":

Mode « RVBA » est un des images en couleurs de 32 bits, chaque pixel est représenté par son 32 « bits, 24 bits qui représentent trois canaux rouge, vert et bleu, 8bit supplémentaire représente le canal alpha, à savoir, le canal clair.

Nous allons à l'image en mode « RVB » image de lena converti à « RGBA ».

>>> lena_rgba = lena.convert("RGBA")
>>> 
>>> 
>>> 
>>> lena_rgba.mode
'RGBA'
>>> lena_rgba.getpixel((0,0))
(226, 137, 125, 255)
>>> lena_rgba.getpixel((0,1))
(226, 137, 125, 255)
>>> lena_rgba.show()

Insérer ici l'image Description
Mode "CMJN":

Mode « CMJN » est une des images couleur 32 bits, chaque pixel est représenté par son 32 bits. Mode « CMYK » est imprimé mode CMJN, il est un mode utilisé lors de l'impression de couleur chromatique, de la couleur RVB de mélange en utilisant le principe de pigment, avec une encre noire, pour un total de quatre couleurs mélangées superposées pour former une soi-disant « l'impression en couleur. » .

Quatre couleurs standard est la suivante: C: Cyan = cyan, également connu comme 'bleu' ou 'bleu' M: Magenta = Magenta, également connu comme 'Magenta'; Y: jaune = jaune; K: plaque de clé ( noir) = positionné enregistrement couleur (noir).

Ci-dessous, nous convertirons en mode image lena à l'image « RVB » pour « CMJN ».


>>> lena_cmyk = lena.convert("CMYK")
>>> lena_cmyk.mode
'CMYK'
>>> lena_cmyk.getpixel((0,0))
(29, 118, 130, 0)
>>> lena_cmyk.getpixel((0,1))
(29, 118, 130, 0)
>>> lena_cmyk.show()

PIL peut tirer de l'exemple dans « RVB » est converti en « CMJN » formule suivante comme:

= 255 C - R & lt
M = 255 - G
Y = 255 - B
K = 0 en
raison de la formule de conversion est relativement simple, l'image en couleurs convertie certaine distorsion.

l' image Lena_cmyk convertie comme suit: Insérer ici l'image Description
Mode "YCbCr":

Mode "YCbCr" images couleur 24 bits, chaque pixel est représenté par son bit 24. Dans laquelle Y se rapporte à la composante de luminance YCbCr, Cb fait référence aux composantes de chrominance bleue, et des moyens de Cr de composantes de chrominance rouge. L'oeil humain est plus sensible à la composante vidéo Y, ce qui réduit la composante de chrominance par sous-échantillonnage de la composante de chrominance, à l'oeil nu ne peut pas détecter les changements dans la qualité de l'image.

Mode formule "RGB" est converti en "YCbCr" est la suivante:
Y = 0,257 R & lt + 0,504 G + 0,098 B + 16
Cb = -0,148
R & lt 0.291- G + 0,439 B + 128
de Cr = 0,439 R & lt 0.368- G + B-0,071 * 128

ci - dessous , nous allons à l' image en mode « RVB » image de lena convertie en « YCbCr ».

>>> lena_ycbcr = lena.convert("YCbCr")
>>> lena_ycbcr.mode
'YCbCr'
>>> lena_ycbcr.getpixel((0,0))
(162, 107, 173)
>>> lena.getpixel((0,0))
(226, 137, 125)
>>>

Selon l'équation
Y = 0,257 197 0,564 + 111 + 0,098 78 + 16 = 136,877
Cb = -0,148
197 à 0,291 111 0,439 + 78 + 128 = 100,785
Cr = 0,439 197 à 0,368 111 à 0,071 * 78 + 128 = 168,097

Ainsi, PIL ne se fait pas dans « RVB » à la conversion « YCbCr » conformément à la présente formule.

Lena_ycbcr image convertie comme suit: Insérer ici l'image Description
Mode "I"

Motif « I » est un nombre entier image de gris de 32 bits, chaque bit de son 32 représente un pixel, 0 représente le noir et blanc 255 représente un nombre compris entre (0255) représentée par différentes nuances de gris. Dans le PIL, le motif « RGB » est converti en mode « I » est converti conformément à la formule suivante:

I = R * 299/1000 587/1000 + G * B * + 114/1000

Nous allons à l'image en mode « RVB » de lena converti à « I » image.

>>> lena_I = lena.convert("I")
>>> lena_I.mode
'I'
>>> lena_I.getpixel((0,0))
>>> lena_I.getpixel((0,1))
>>> lena_L = lena.convert("L")
>>> lena_L.getpixel((0,0))
>>> lena_L.getpixel((0,1))

A partir des résultats expérimentaux voir schéma de résultat « I » motif et le « L » est exactement le même, sauf le mode « L » du pixel est 8bit, et le mode pixel « I » est 32bit.

Mode "F"

Mode « F » 32 bits flottant image grise, avec chacun de ses pixels 32 bits, où 0 représente le noir et blanc 255 représente un nombre compris entre (0255) représentée par différentes nuances de gris. Dans PIL, le passage du mode "RVB" à "F" est un mode de conversion conformément à la formule suivante: F = R & lt * 299/1000 + G + B * 114/1000 587/1000
Soit le mode est "RGB" l' image lena est convertie à l'image "F".

>>> lena_F = lena.convert("F")
>>> lena_F.mode
'F'
>>> lena_F.getpixel((0,0))
162.2429962158203
>>> lena_F.getpixel((0,1))
162.2429962158203
>>>

Insérer ici l'image Description
Mode mode « F » et « L » est la même que la formule de conversion, la formule est converti en RGB des valeurs de gris, mais le motif « F » a conservé une partie fractionnaire, telles que les données de l'expérience.

Ce sont les détails de la bibliothèque de traitement d'images mis en œuvre dans la conversion de format d'image Python PIL de
contenu sur plus de combien, et enfin de recommander une bonne réputation dans le nombre d'institutions publiques [programmeurs], il y a beaucoup de voitures anciennes compétences d' apprentissage, l' expérience d' apprentissage, les techniques d'entrevue, l' expérience en milieu de travail et d' autres part, plus nous avons soigneusement préparé les informations d' introduction à base zéro, des informations sur des projets réels, le calendrier doit expliquer la technologie de programmation Python tous les jours, partager des méthodes d'apprentissage et la nécessité de faire attention aux petits détailsInsérer ici l'image Description

Publié 35 articles originaux · a gagné les éloges 1 · vues 10000 +

Je suppose que tu aimes

Origine blog.csdn.net/chengxun02/article/details/105029806
conseillé
Classement