Python | Cascadas de Haar para la detección de objetos

La detección de objetos es una tecnología informática relacionada con la visión por computadora, el procesamiento de imágenes y el aprendizaje profundo que se ocupa de detectar instancias de objetos en imágenes y videos. Haremos la detección de objetos en este artículo usando algo conocido como cascadas de haar.
 

¿Qué son las cascadas de Haar? 

Los clasificadores Haar Cascade son una forma eficaz de detección de objetos. Este método fue propuesto por Paul Viola y Michael Jones en su artículo Detección rápida de objetos usando una cascada potenciada de características simples . Haar Cascade es un enfoque basado en el aprendizaje automático en el que se utilizan muchas imágenes positivas y negativas para entrenar al clasificador. 
 

  • Imágenes positivas: estas imágenes contienen las imágenes que queremos que nuestro clasificador identifique.
  • Imágenes negativas: imágenes de todo lo demás, que no contienen el objeto que queremos detectar.

Requisitos: 

  • Asegúrese de tener Python, Matplotlib y OpenCV instalados en su PC (todas las últimas versiones).
  • Los archivos en cascada de haar se pueden descargar desde el repositorio de OpenCV Github .

Implementación
 

Python3

# Importing all required packages
import cv2
import numpy as np
import matplotlib.pyplot as plt % matplotlib inline
 
 
# Read in the cascade classifiers for face and eyes
face_cascade = cv2.CascadeClassifier('../DATA / haarcascades / haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('../DATA / haarcascades / haarcascade_eye.xml')
 
 
 
# create a function to detect face
def adjusted_detect_face(img):
     
    face_img = img.copy()
     
    face_rect = face_cascade.detectMultiScale(face_img,
                                              scaleFactor = 1.2,
                                              minNeighbors = 5)
     
    for (x, y, w, h) in face_rect:
        cv2.rectangle(face_img, (x, y),
                      (x + w, y + h), (255, 255, 255), 10)\
         
    return face_img
 
 
# create a function to detect eyes
def detect_eyes(img):
     
    eye_img = img.copy()   
    eye_rect = eye_cascade.detectMultiScale(eye_img,
                                            scaleFactor = 1.2,
                                            minNeighbors = 5)   
    for (x, y, w, h) in eye_rect:
        cv2.rectangle(eye_img, (x, y),
                      (x + w, y + h), (255, 255, 255), 10)       
    return eye_img
 
# Reading in the image and creating copies
img = cv2.imread('../sachin.jpg')
img_copy1 = img.copy()
img_copy2 = img.copy()
img_copy3 = img.copy()
 
# Detecting the face
face = adjusted_detect_face(img_copy)
plt.imshow(face)
# Saving the image
cv2.imwrite('face.jpg', face)

Código: Detectar los ojos 
 

Python3

eyes = detect_eyes(img_copy2)
plt.imshow(eyes)
cv2.imwrite('face_eyes.jpg', eyes)

Código: Detección de cara y ojos. 
 

Python3

eyes_face = adjusted_detect_face(img_copy3)
eyes_face = detect_eyes(eyes_face)
plt.imshow(eyes_face)
cv2.imwrite('face+eyes.jpg', eyes_face)

Haar Cascades se puede utilizar para detectar cualquier tipo de objeto siempre que tenga el archivo XML adecuado para ello. Incluso puede crear sus propios archivos XML desde cero para detectar cualquier tipo de objeto que desee.
 

Publicación traducida automáticamente

Artículo escrito por AashalKamdar 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 *