base Python: aplicación de la imagen Pitón procesamiento PIL conversión del formato de imagen Biblioteca

En este artículo se describe la implementación de la imagen Pitón procesamiento biblioteca de conversión de formato de imagen PIL, el código de muestra de papel se describe en gran detalle, tiene un cierto valor de referencia de aprendizaje para todos nosotros para estudiar o trabajar, necesitamos amigos en adelante como pequeñas series aprender juntos
en el procesamiento digital de imágenes, tiene sus algoritmos de procesamiento específica para los diferentes formatos de imagen. Por lo tanto, antes de hacer el procesamiento de imágenes, tenemos que pensar con claridad darse cuenta de lo formato de imagen que tienen que basar el diseño de algoritmos y. Sobre la base de esta demanda, usando la biblioteca PIL pitón de procesamiento de imágenes para conseguir la conversión de diferentes formatos de imagen.

Para imágenes en color, independientemente del formato de imagen es PNG o BMP o JPG, en el PIL, una función de módulo de imagen abierta () Imagen modo de apertura de un objeto que se devuelve "RGB". Para una imagen en escala de grises, independientemente de su formato de imagen es PNG o BMP o JPG, después de la apertura, el patrón es "L".

Antes de la introducción a través del sitio Imagen de módulos para la conversión mutua entre PNG, BMP, JPG imagen formato de color se puede lograr mediante el módulo Abrir imagen (), y la función save (). Específicamente que, al abrir estas imágenes, PIL decodificarlos como imagen "RGB" de los tres canales. Los usuarios pueden estar basadas en la imagen "RGB", procesarla. Procesadas mediante la función Save (), el resultado de procesamiento puede ser guardado como PNG, BMP, JPG en cualquier formato. Esto también completa la conversión entre varios formatos. Del mismo modo, otra conversión de formato de imagen en color se puede hacer de esta manera. Por supuesto, para los diferentes formatos de imagen en escala de grises también puede ser completada por una ruta similar, pero después se descodifica patrón PIL es la imagen de "L".

Aquí, me gustaría explicar en detalle la función de convertir una imagen Módulo () para la conversión entre diferentes modos de imagen.

La función Convert () se define en tres formas, que forma se define como sigue:

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

El uso de diferentes parámetros, la imagen actual en un nuevo patrón, y genera una nueva imagen como un valor de retorno.

En este trabajo probamos la imagen es una foto de Lena:

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

Resultado: El Aquí Insertar imagen Descripción
modo "L":

Modo de "L" es una imagen gris, para cada píxel con sus ocho bits, donde 0 representa negro y 255 representa blanco, otros números representan diferentes tonos de gris. En el PIL, el patrón "RGB" se convierte en el modo de "L" se convierte de acuerdo con la siguiente fórmula:

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

A continuación vamos a lena imagen se convierte a la imagen de "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")
>>>

Para el primer píxel en la imagen original es lena (197, 111, 78), que se convierte en valores de gris:

197 * 299/1000 + 111 * 587/1000 + 78 * 114/1000 = 132.952, PIL solamente tomar la parte entera, es decir, 132.

imagen Lena_L convierte como sigue: Aquí Insertar imagen Descripción
Modelo P:

Pattern "P" imágenes en color de 8 bits, cada píxel está representado por su 8 bits, con un valor correspondiente a la paleta de colores de acuerdo con el registro de salida.

Aquí se utiliza la imagen lena paleta de colores predeterminada voluntad en una foto "P".

ejemplo:

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

Resultado: El Aquí Insertar imagen Descripción
modo "RGBA":

Mode "RGBA" es una imágenes en color de 32 bits, cada píxel está representado por su 32 'bits, 24 bits que representan rojo, verde y azul tres canales, de 8 bits adicional representa el canal alfa, es decir, canal claro.

Modo de imagen "RGB" de lena vamos a convertido a la imagen "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()

Aquí Insertar imagen Descripción
Modo "CMYK":

Modo "CMYK" es una imágenes en color de 32 bits, cada píxel está representado por su 32 bits. Mode "CMYK" está impreso modo CMYK, es un modo utilizado cuando la impresión color cromático, RGB de mezcla de color usando el principio de pigmento, con tinta de color negro, para un total de cuatro colores mezclados superpuesta para formar una llamada "impresión a todo color." .

Cuatro colores estándar es: C: Cyan = cyan, también conocido como 'azul' o 'azul' M: Magenta = Magenta, también conocido como 'Magenta'; Y: Amarillo = amarillo; K: Placa Key ( negro) = posicionado registrarse color (negro).

A continuación vamos a convertir el modo de imagen lena en "RGB" para una imagen "CMYK".


>>> 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 puede ser aprendido del ejemplo en "RGB" se convierte en "CMYK" fórmula es la siguiente:

= 255 C - R & lt
M = 255 - G
Y = 255 - B
K = 0
, debido a la fórmula de conversión es relativamente simple, el color de la imagen convertida cierta distorsión.

imagen Lena_cmyk convierte como sigue: Aquí Insertar imagen Descripción
Mode "YCbCr":

Modo "YCbCr" imágenes en color de 24 bits, cada píxel está representado por su 24 bits. En la que Y se refiere a componente de luminancia YCbCr, Cb se refiere a los componentes de crominancia azul, y componente de crominancia roja significa Cr. El ojo humano es más sensible a la de vídeo componente Y, reduciendo así la componente de crominancia por sub-muestreo de la componente de crominancia, el ojo humano no puede detectar cambios en la calidad de imagen.

Mode "RGB" se convierte en "YCbCr" fórmula es la siguiente:
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

a continuación vamos a modo de imagen a "RGB" de lena convertido a la imagen "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)
>>>

De acuerdo con la ecuación
Y = 0,257 197 + 0.564 111 + 0.098 78 + 16 = 136.877
Cb = -0,148
197 a 0,291 111 0,439 + 78 + 128 = 100.785
de Cr = 0,439 197-0,368 111 a 0,071 * 78 + 128 = 168.097

De este modo, PIL no se lleva a cabo en "RGB" a la conversión "YCbCr" de acuerdo con esta fórmula.

Lena_ycbcr imagen convertida de la siguiente manera: Aquí Insertar imagen Descripción
Modo "I"

Pattern "I" es un 32-bit imagen gris número entero, con cada uno de sus 32 bits representa un pixel, 0 representa negro y 255 representa blanco, un número entre (0255) representado por diferentes tonos de gris. En el PIL, el patrón "RGB" se convierte en "I" modo se transforma de acuerdo con la siguiente fórmula:

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

Modo de imagen "RGB" de lena vamos convirtió al foto "yo".

>>> 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 de los resultados experimentales ver el patrón resultado "I" el patrón y la "L" es exactamente la misma, excepto en el modo "L" del píxel es de 8 bits, y el modo de píxeles "I" es de 32 bits.

Modo "F"

Mode "F" gris imagen flotante de 32 bits, con cada uno de sus píxeles 32 bits, donde 0 representa negro y 255 representa blanco, un número entre (0255) representado por diferentes tonos de gris. En PIL, la transición desde el modo de "RGB" a "F" es un modo de conversión de acuerdo con la siguiente fórmula: F. = R ^ * 299/1000 + G * + B * 114/1000 587/1000
Deje que el modo es "RGB" imagen lena se convierte en la imagen "F".

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

Aquí Insertar imagen Descripción
el modo y "L" Mode "F" es el mismo que la fórmula de conversión, la fórmula se convierte a valores de gris RGB, pero el patrón "F" retenido parte fraccionaria, tales como los datos del experimento.

Estos son los detalles de la biblioteca de procesamiento de imágenes implementado en formato de imagen Pitón PIL conversión de
contenido en más de la cantidad, y, finalmente, para recomendar una buena reputación en el número de instituciones públicas [programadores], hay una gran cantidad de veteranos habilidades de aprendizaje, la experiencia de aprendizaje, habilidades de la entrevista, experiencia de trabajo y otra acción, cuanto más cuidadosamente preparados al basados en cero información introductoria, información sobre proyectos reales, el tiempo tiene que explicar la tecnología programador Python todos los días, compartir algunos métodos de aprendizaje y la necesidad de prestar atención a los pequeños detallesAquí Insertar imagen Descripción

Publicado 35 artículos originales · ganado elogios 1 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/chengxun02/article/details/105029806
Recomendado
Clasificación