¿Alguna vez te has preguntado cómo funcionan los sistemas de detección de objetos en tiempo real como los que se utilizan en videovigilancia o en robots autónomos? Hoy te enseñaremos cómo hacerlo utilizando Python y la librería OpenCV.
¿Qué es OpenCV?
OpenCV (Open Source Computer Vision Library) es una librería de visión artificial y machine learning en tiempo real que nos permite procesar imágenes y videos, reconocer objetos y realizar seguimientos de ellos. Ofrece soporte para diversos lenguajes de programación, incluyendo C++, Python y Java.
Instalación de OpenCV en Python
Para utilizar OpenCV en Python, necesitas tener Python 3 instalado en tu computadora. Luego, puedes instalar OpenCV utilizando pip, el gestor de paquetes de Python:
pip install opencv-python
De esta manera, tendrás instalada la versión más reciente de OpenCV en tu computadora.
Capturando video con Python
Para capturar video con Python, necesitamos utilizar la clase VideoCapture de OpenCV. Aquí te mostramos un ejemplo:
import cv2
# Abrir el dispositivo de captura de video
cap = cv2.VideoCapture(0)
while True:
# Leer frame a frame
ret, frame = cap.read()
# Mostrar el frame resultante
cv2.imshow('frame',frame)
# Salir si se presiona la tecla "q"
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Liberar el dispositivo de captura y cerrar las ventanas
cap.release()
cv2.destroyAllWindows()
Con este código, abrimos la cámara de nuestro dispositivo (en este caso, la cámara 0) y comenzamos a leer frames del video en un ciclo while. Cada uno de estos frames es mostrado en una ventana llamada «frame». La captura de video continuará hasta que presionemos la tecla «q».
Detección de objetos con OpenCV
Una de las principales funcionalidades de OpenCV es la detección de objetos en imágenes y videos. En este caso, utilizaremos la técnica de Haar Cascade para detectar caras en un video. Primero, necesitamos descargar el archivo XML con la definición del clasificador de Haar. Aquí puedes encontrar el archivo Haar Cascade para la detección de caras:
https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml
Una vez descargado el archivo XML, podemos utilizarlo en nuestro código Python:
import cv2
# Cargar el clasificador de Haar Cascade para la detección de caras
face_cascade = cv2.CascadeClassifier('path/to/haarcascade_frontalface_default.xml')
# Abrir la cámara de nuestro dispositivo de captura de video
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
# Convertir el frame a escala de grises para mejorar la detección
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# Detectar caras en el frame utilizando el clasificador de Haar Cascade
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# Dibujar rectángulos alrededor de las caras detectadas
for (x,y,w,h) in faces:
cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
# Mostrar el frame resultante
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
Este código utiliza el clasificador de Haar Cascade para detectar caras en el frame en escala de grises. Luego, se dibuja un rectángulo alrededor de cada cara detectada y se muestra el frame resultante.
Como puedes ver, con Python y OpenCV es muy fácil realizar detección de objetos en tiempo real. Si quieres continuar aprendiendo más sobre visión artificial y machine learning, te recomendamos explorar otras librerías y herramientas disponibles en el mercado, como TensorFlow, Keras, PyTorch y Scikit-Learn. ¡A programar!