Opencv es una biblioteca de Python utilizada principalmente para el procesamiento de imágenes y la visión por computadora. En este artículo primero, detectamos rostros y luego recortamos el rostro de la imagen. La detección de rostros es la rama del procesamiento de imágenes que se utiliza para detectar rostros.
Usaremos un modelo Haar Cascade previamente entrenado para detectar rostros de la imagen. Una cascada haar es el método de detección de objetos utilizado para detectar objetos de la imagen. Este algoritmo fue entrenado por numerosas imágenes. Puede descargar el archivo de cascada face haar haciendo clic aquí .
Implementemos paso a paso:
Paso 1: En este paso, leeremos la imagen y la convertiremos a escala de grises.
Python3
import cv2 # Read the input image img = cv2.imread('mpw.jpeg') # Convert into grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
Explicación: en este código primero importamos nuestra biblioteca opencv usando import cv2. El método cv2.imread() carga la imagen desde la ruta dada (por ejemplo: mpw.jpeg o filepath/mpw.jpeg) Después de cargar la imagen, convertimos la imagen a una imagen en escala de grises usando COLOR_BGR2GRAY.
Paso 2: use el modelo Haar Cascade para detectar rostros de la imagen.
Python3
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml') # Detect faces faces = face_cascade.detectMultiScale(gray, 1.1, 4)
Explicación: Usamos cv2.CascadeClassifier para cargar el archivo haarcascade en face_cascade. Función detectMultiScale() utilizada para detectar rostros. Toma 3 parámetros:
- Gris: imagen de entrada (imagen en escala de grises)
- 1.1: factor de escala, especifica cuánto se reduce el tamaño de la imagen con cada escala. Mejora la detección.
- 4: MinNeighbors, especifica cuántos vecinos debe retener cada rectángulo candidato.
Paso 3: Encuentra la cara en la imagen.
Python3
for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2) faces = img[y:y + h, x:x + w] cv2.imshow("face",faces) cv2.imwrite('face.jpg', faces) cv2.imshow('img', img) cv2.waitKey()
Explicación: x,y son la ubicación de píxeles de las caras, w,h son el ancho y la altura de las caras. función cv2.rectangle() utilizada para dibujar un rectángulo sobre el objeto detectado, img es la imagen de entrada, (x,y),(x+w, y+h) son las ubicaciones del rectángulo,(0,0,255) es el color de un rectángulo este argumento se pasa como una tupla para BGR, usaríamos (0,0,255) para el rojo, 2 es el grosor del rectángulo.
A continuación se muestra la implementación completa:
Imagen utilizada –
Python3
import cv2 # Read the input image img = cv2.imread('mpw.jpeg') # Convert into grayscale gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Load the cascade face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt2.xml') # Detect faces faces = face_cascade.detectMultiScale(gray, 1.1, 4) # Draw rectangle around the faces and crop the faces for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2) faces = img[y:y + h, x:x + w] cv2.imshow("face",faces) cv2.imwrite('face.jpg', faces) # Display the output cv2.imwrite('detcted.jpg', img) cv2.imshow('img', img) cv2.waitKey()
Producción:
Publicación traducida automáticamente
Artículo escrito por mohanapranes y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA