Segmentación de personas con ? MEDIAPIPE SELFIE SEGMENTATION | Python – MediaPipe – OpenCV
Segmenta a personas presentes en una escena del fondo, con MediaPipe Selfie Segmentation. Ya verás que necesitaremos muy pocas líneas de código. ¡Anímate a probarlo!.
CONTENIDO
- MediaPipe Selfie Segmentation
- Modelos empleados en MediaPipe Selfie Segmentation
- Opciones de configuración
- Salida que obtenemos al aplicar MediaPipe Selfie Segmentation
- ¡Vamos con la programación!
- MediaPipe Selfie Segmentation en imágenes
- MediaPipe Selfie Segmentation en videos
- Referencias
MediaPipe Selfie Segmentation

Figura 1: Ejemplo del uso de MediaPipe Selfie Segmentation.
Otra de las soluciones que veremos de mediapipe es MediaPipe Selfie Segmentation. Esta permite segmentar a las personas prominentes en una escena, obteniendo una máscara en donde las regiones en blanco (o pixeles más claros) representan a las personas segmentadas y en negro (o pixeles más oscuros) al fondo de la imagen. Además puede ejecutarse en tiempo real en teléfonos inteligentes, o laptops.
Modelos empleados en MediaPipe Selfie Segmentation

Figura 2: Ejemplo de las salidas obtenidas al usar el modelo general y el modelo landscape.
En esta solución se proveen dos modelos general y landscape. Puedes obtener más información sobre ellos en la docuentación de MediaPipe y en su model card.
Opciones de Configuración
MODEL_SELECTION (Por defecto 0)
Para usar esta solución debemos entregar una imagen en rgb, además debemos especificar 0 o 1 para MODEL_SELECTION, que corresponderá a si elegimos usar el modelo general o modelo landscape respectivamente.
Salida que obtenemos al usar MediaPipe Selfie Segmentation

Figura 3: Ejemplo de la salida que obtenemos al usar MediaPipe Selfie Segmentation.
SEGMENTATION_MASK
Como salida obtendremos SEGMENTATION_MASK, que será la máscara de segmentación de salida que además tiene las mismas dimensiones que la imagen de entrada. Esta tendrá valores comprendidos en el rango de 0 a 1.
Si visualizamos la máscara de segmentación de salida (figura 3), podremos ver que los pixeles más claros o blancos representarán a la o las personas, mientras que los más oscuros o en negro al fondo de la escena.
NOTA:
- Se puede segmentar a varios humanos presentes en una escena, especialmente si son de tamaño similar.
- Algunas características delgadas de cuerpo como los dedos, pueden perderse ocasionalmente.
¡Vamos con la programación!
Para una explicación más detallada de los programas que veremos a continuación, por favor dirígete al videotutorial de mi canal.
MediaPipe Selfie Segmentation en imágenes
import cv2 import mediapipe as mp mp_selfie_segmentation = mp.solutions.selfie_segmentation with mp_selfie_segmentation.SelfieSegmentation( model_selection=1) as selfie_segmentation: image = cv2.imread("image_0003.jpg") image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) results = selfie_segmentation.process(image_rgb) cv2.imshow("Image", image) cv2.imshow("Mask", results.segmentation_mask) cv2.waitKey(0) cv2.destroyAllWindows()
MediaPipe Selfie Segmentation en video
import cv2 import mediapipe as mp mp_selfie_segmentation = mp.solutions.selfie_segmentation cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) with mp_selfie_segmentation.SelfieSegmentation( model_selection=1) as selfie_segmentation: while True: ret, frame = cap.read() if ret == False: break frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) results = selfie_segmentation.process(frame_rgb) cv2.imshow("Frame", frame) cv2.imshow("Mask", results.segmentation_mask) if cv2.waitKey(1) & 0xFF == 27: break cap.release() cv2.destroyAllWindows()
Referencias
? Mediapipe Selfie Segmentation: https://google.github.io/mediapipe/solutions/selfie_segmentation
? Model card: https://drive.google.com/file/d/1dCfozqknMa068vVsO2j_1FgZkW_e3VWv/preview