En este artículo, aprenderemos los colores en una imagen usando el módulo Pillow en Python. Analicemos algunos conceptos:
- Una clase crucial dentro de la biblioteca de imágenes de Python es la clase de imagen. Se define dentro del módulo Imagen y proporciona una imagen PIL en la que a menudo se administran las operaciones de manipulación. Una instancia de esta clase a menudo se crea de varias maneras: cargando imágenes desde un archivo, creando imágenes desde cero o como resultado del procesamiento de otras imágenes. Veremos todos estos en uso.
- Cualquier imagen consta de píxeles, cada píxel representa un punto en una imagen. Un píxel contiene tres valores y cada valor oscila entre 0 y 255, lo que representa la cantidad de componentes rojo, verde y azul. La combinación de estos forma un color real del píxel.
- El módulo ImageColor contiene tablas de colores y convertidores de especificadores de color de estilo CSS3 a tuplas RGB. Este módulo es utilizado por PIL.Image.Image.new() y el módulo ImageDraw, entre otros.
Módulo ImageColor que contiene varios formatos de representación de colores. Estos formatos son los siguientes:
- String: los colores también se pueden representar como strings como rojo, verde, azul, amarillo. Son mayúsculas y minúsculas.
- Color Hexadecimal: Se representa como: #rgb o #rrggbb. Por ejemplo, #ffff00 representa el amarillo, donde el rojo es 255, el verde es 255 y el azul es 0. RGB sería una tupla-(255,255,0)
- Cilíndrico: se representa como HSL donde H-tono, S-saturación y L-luminosidad del color. Por ejemplo, #ffff00 representa amarillo donde el matiz es 0,63, la saturación es 1,00 y también el valor de luminosidad es 0,50.
Crear imágenes con colores
Aquí, crearemos imágenes con colores usando el método Image.new().
El método PIL.Image.new() crea una nueva imagen con el modo y tamaño dados. El tamaño se proporciona como una tupla (ancho, alto), en píxeles. El color se proporciona como un valor único para imágenes de una sola banda y una tupla para imágenes de múltiples bandas (con un valor para cada banda). También podemos usar nombres de colores. Si se omite el argumento del color, la imagen se rellena con cero (esto suele corresponder al negro). Si el color es Ninguno, la imagen no se inicializa. Esto puede ser útil si vas a pegar o dibujar cosas en la imagen.
Sintaxis: PIL.Image.new(modo, tamaño, color)
Parámetros:
- modo: El modo a utilizar para la nueva imagen. (Podría ser RGB, RGBA)
- tamaño: una tupla de 2 que contiene (ancho, alto) en píxeles.
- color: Qué color usar para la imagen. El valor predeterminado es negro. Si se proporciona, debe ser un valor de punto flotante o entero único para los modos de banda única y una tupla para los modos de banda múltiple.
Valor de retorno: un objeto de imagen .
Python3
from PIL import Image # color --> "red" or (255,0,0) or #ff0000 img = Image.new('RGB',(200,200),(255,0,0)) img.show()
Producción:
Conversión de string de color a valores de color RGB
Usando el módulo ImageColor, también podemos convertir colores a formato RGB (tupla RGB), ya que RGB es muy conveniente para realizar diferentes operaciones. Para hacer esto usaremos el método ImageColor.getgrb() . ImageColor.getrgb () Convierte una string de color en una tupla RGB. Si la string no se puede analizar, esta función genera una excepción ValueError.
Sintaxis: PIL.ImageColor.getrgb(color)
Parámetros:
- color: una string de color
Devuelve: (rojo, verde, azul [, alfa])
Python3
# importing module from PIL import ImageColor # using getrgb for yellow img1 = ImageColor.getrgb("yellow") print(img1) # using getrgb for red img2 = ImageColor.getrgb("red") print(img2)
Producción:
(255, 255, 0) (255, 0, 0)
Conversión de string de color a valores de escala de grises
ImageColor.getcolor () Igual que getrgb(), pero convierte el valor RGB en un valor de escala de grises si el modo no es color o una imagen de paleta. Si la string no se puede analizar, esta función genera una excepción ValueError.
Sintaxis: PIL.ImageColor.getcolor(color, modo)
Parámetros:
- color – Una string de color
Devuelve: (nivel de grises [, alfa]) o (rojo, verde, azul [, alfa])
Python3
# importing module from PIL import ImageColor # using getrgb for yellow img1 = ImageColor.getcolor("yellow",'L') print(img1) # using getrgb for red img2 = ImageColor.getcolor("red",'L') print(img2)
Producción:
226 76
Cambia el color cambiando los valores de píxel.
También podemos cambiar el color de una imagen a algún otro color.
Imagen de entrada:
Python3
from PIL import Image img = Image.open("flower.jpg") img = img.convert("RGB") d = img.getdata() new_image = [] for item in d: # change all white (also shades of whites) # pixels to yellow if item[0] in list(range(200, 256)): new_image.append((255, 224, 100)) else: new_image.append(item) # update image data img.putdata(new_image_data) # save new image img.save("flower_image_altered.jpg")
Producción:
Publicación traducida automáticamente
Artículo escrito por vanisinghal0201 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA