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