En este artículo, aprenderemos a recortar una imagen circularmente utilizando una biblioteca de Pillows. Recortar una imagen circularmente significa seleccionar una región circular dentro de una imagen y eliminar todo lo que está fuera del círculo.
Acercarse:
- Si tiene una imagen en modo L, la imagen se vuelve en escala de grises. Entonces creamos una nueva imagen con el modo «L».
- Se crea una imagen con un círculo blanco en el medio con las mismas dimensiones que la imagen de entrada.
- Convierta una nueva imagen en una array.
- Convierte la imagen original de una array.
- Apila estas dos arrays juntas para recortar solo la parte central circular.
Tomemos esta imagen inicial:
Paso 1: importa el módulo y lee la imagen.
Python3
import numpy as np from PIL import Image, ImageDraw img = Image.open("/content/gfg.jpeg") display(img)
Producción:
Paso 2: Crea una imagen.
Usaremos la función pieslice() para obtener la parte circular de la imagen en blanco, luego superpondremos la imagen original y la imagen luminosa.
ImageDraw.Draw.pieslice() Igual que arco, pero también dibuja líneas rectas entre los puntos finales y el centro del cuadro delimitador.
Sintaxis: PIL.ImageDraw.Draw.pieslice(xy, inicio, fin, relleno=Ninguno, contorno=Ninguno)
Parámetros:
xy : cuatro puntos para definir el cuadro delimitador. Secuencia de [(x0, y0), (x1, y1)] o [x0, y0, x1, y1].
inicio : ángulo de inicio, en grados. Los ángulos se miden desde las 3 en punto, aumentando en el sentido de las agujas del reloj.
end – Ángulo final, en grados.
relleno : color que se utilizará para el relleno.
contorno : color que se utilizará para el contorno.Devuelve: un objeto de imagen en forma de rebanada de pastel.
Código:
Python3
h,w = img.size # creating luminous image lum_img = Image.new('L',[h,w] ,0) draw = ImageDraw.Draw(lum_img) draw.pieslice([(0,0),(h,w)],0,360,fill=255) img_arr = np.array(img) lum_img_arr = np.array(lum_img) display(Image.fromarray(lum_img_arr))
Producción:
Paso 3: apile estas dos arrays juntas para recortar solo la parte central circular.
Python3
final_img_arr = np.dstack((img_arr, lum_img_arr)) display(Image.fromarray(final_img_arr))
Producción:
A continuación se muestra la implementación completa:
Python3
import numpy as np from PIL import Image, ImageDraw img=Image.open("img.jpg") display(img) height,width = img.size lum_img = Image.new('L', [height,width] , 0) draw = ImageDraw.Draw(lum_img) draw.pieslice([(0,0), (height,width)], 0, 360, fill = 255, outline = "white") img_arr =np.array(img) lum_img_arr =np.array(lum_img) display(Image.fromarray(lum_img_arr)) final_img_arr = np.dstack((img_arr,lum_img_arr)) display(Image.fromarray(final_img_arr))
Producción:
Publicación traducida automáticamente
Artículo escrito por soumibardhan10 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA