Superponer una imagen sobre otra se refiere al proceso de copiar los datos de imagen de una imagen sobre otra. La superposición podría referirse a otros tipos de métodos de procesamiento de imágenes, como la superposición de imágenes similares para la reducción de ruido, la fusión, etc. Pero por ahora, nos concentraremos en el primero. En este artículo, aprenderemos cómo superponer una imagen encima de otra imagen mediante el procesamiento de imágenes.
Módulo requerido:
Pillow: la ,
pip install pillow
Para fines de demostración, usaríamos la siguiente imagen como imagen principal.
Ejemplo 1: superposición de una imagen alfa.
Si superponemos una imagen que contiene regiones transparentes sobre una imagen opaca, en la imagen final solo aparecerán las regiones opacas de la imagen superpuesta. Es posible que el píxel no sea completamente opaco y, por lo tanto, podría tener una opacidad analógica (canal alfa). Este tipo de superposición es el predominante, ya que permite que las imágenes se mezclen sin problemas.
Para superponer la imagen, usaríamos la función pegar() que se encuentra dentro de la biblioteca de Pillows.
Sintaxis: paste(self, im, box=Ninguno, máscara=Ninguno)
Pega otra imagen en esta imagen.
Parámetros:
- im: imagen de origen o valor de píxel (entero o tupla).
- cuadro: una tupla de 4 opcional que proporciona la región para pegar. Si en su lugar se usa una tupla de 2, se trata como la esquina superior izquierda. Si se omite o Ninguno, la fuente se pega en la esquina superior izquierda.
- máscara: una imagen de máscara opcional.
Para la demostración, estaríamos superponiendo la siguiente imagen:
A continuación se muestra la implementación:
Python3
from PIL import Image # Opening the primary image (used in background) img1 = Image.open(r"BACKGROUND_IMAGE_PATH") # Opening the secondary image (overlay image) img2 = Image.open(r"OVERLAY_IMAGE_PATH") # Pasting img2 image on top of img1 # starting at coordinates (0, 0) img1.paste(img2, (0,0), mask = img2) # Displaying the image img1.show()
Producción:
Explicación:
Primero, abrimos la imagen principal y guardamos su objeto de imagen en la variable img1 . Luego, abrimos la imagen que se usaría como superposición y guardamos su objeto de imagen en la variable img2 . Luego llamamos al método de pegado para superponer/pegar la imagen pasada en img1 . El primer argumento es img2 , que es el objeto de imagen de la imagen que contiene texto transparente. Esta imagen se usaría para la superposición. El segundo argumento es una tupla de tamaño 2 que indica las coordenadas de img1 , donde se debe pegar img2 . Dado que es (0, 0), la segunda imagen se pegaría en la parte superior izquierda de img1 . El tercer argumento es img2que se pasa al parámetro mask. Especificará la máscara de transparencia, para img2 . Al final mostramos la imagen.
Ejemplo 2: superposición de una imagen no alfa
Si superponemos una imagen completamente opaca sobre una imagen opaca, todos los valores de píxeles de la imagen superpuesta se retienen en la imagen final. En este proceso, los valores de píxeles de la imagen de fondo se pierden durante el proceso (en la región ocupada por la imagen superpuesta).
Estaríamos usando la siguiente imagen como la imagen superpuesta:
A continuación se muestra la implementación:
Python3
from PIL import Image img1 = Image.open(r"BACKGROUND_IMAGE_PATH") img2 = Image.open(r"OVERLAY_IMAGE_PATH") # No transparency mask specified, # simulating an raster overlay img1.paste(img2, (0,0)) img1.show()
Producción:
Explicación:
El código es prácticamente el mismo que el anterior, por lo que solo nos interesa el código modificado. En la llamada al método de pegado, omitimos el argumento de la máscara, esto permite que no se use una máscara de transparencia para la superposición. Por lo tanto, la imagen simplemente se copia y pega en img1 . Dado que los valores de píxel de img2 se copian tal cual, el fondo blanco también está presente en la imagen de salida. Le da al espectador una pista de que la imagen se modifica sin mucha consideración en la calidad de la imagen final, debido a los cambios de color abruptos que se encuentran en la imagen final (esta situación se mitiga cuando la imagen superpuesta contiene regiones transparentes).