Cojín Python – Colores en una imagen

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *