La computer vision, o visión por computadora, es una rama de la inteligencia artificial que se enfoca en la capacidad de las computadoras para interpretar y comprender el contenido de imágenes o videos. Este campo tiene aplicaciones en diversas industrias, incluyendo la medicina, la seguridad, el comercio minorista y la manufactura. En este contexto, vamos a desarrollar un código en Python que simule un proceso típico de computer vision: la detección de objetos en una imagen.
Para llevar a cabo esta tarea, utilizaremos la biblioteca `OpenCV`, que es una de las más populares y potentes para el procesamiento de imágenes y videos. Además, emplearemos `TensorFlow` y `Keras` para cargar un modelo preentrenado de detección de objetos.
### Paso 1: Instalación de Bibliotecas
Primero, asegúrate de tener instaladas las bibliotecas necesarias. Puedes instalarlas usando `pip`:
« `bash
pip install opencv-python tensorflow keras
« `
### Paso 2: Importación de Bibliotecas
Importaremos las bibliotecas necesarias para nuestro código:
« `python
import cv2
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import load_model
« `
### Paso 3: Cargar el Modelo Preentrenado
Vamos a cargar un modelo preentrenado de detección de objetos. Para este ejemplo, usaremos un modelo simple como `MobileNetV2` preentrenado en el conjunto de datos `COCO`.
« `python
# Cargar el modelo preentrenado
model = tf.keras.applications.MobileNetV2(weights=’imagenet’)
« `
### Paso 4: Función para Detección de Objetos
Definiremos una función que tome una imagen como entrada y devuelva una lista de detecciones de objetos.
« `python
def detectar_objetos(imagen_path):
# Leer la imagen
imagen = cv2.imread(imagen_path)
if imagen is None:
print(« No se pudo cargar la imagen. »)
return []
# Convertir la imagen a un tensor
imagen_resizada = cv2.resize(imagen, (224, 224))
imagen_tensor = np.expand_dims(imagen_resizada, axis=0) 255.0
# Realizar la inferencia
predicciones = model.predict(imagen_tensor)
# Obtener las etiquetas de las clases
etiquetas = tf.keras.applications.mobilenet_v2.decode_predictions(predicciones, top=3)[0]
# Convertir la imagen a escala de grises para mostrar las detecciones
imagen_gris = cv2.cvtColor(imagen, cv2.COLOR_BGR2GRAY)
# Dibujar rectángulos alrededor de los objetos detectados
for (imagen_id, etiqueta, probabilidad) in etiquetas:
for (clase_id, descripcion, confianza) in etiqueta:
(startX, startY, endX, endY) = (0, 0, imagen.shape[1], imagen.shape[0])
color = (0, 255, 0)
cv2.rectangle(imagen_gris, (startX, startY), (endX, endY), color, 2)
y = startY – 10 if startY – 10 > 10 else startY + 10
cv2.putText(imagen_gris, « {}: {:.4f} ».format(descripcion, confianza 100),
(startX, y), cv2.FONT_HERSHEY_SIMPLEX, 0.45, color, 2)
# Mostrar la imagen con detecciones
cv2.imshow(« Detecciones de Objetos », imagen_gris)
cv2.waitKey(0)
cv2.destroyAllWindows()
return etiquetas
« `
### Paso 5: Ejecutar la Detección de Objetos
Finalmente, vamos a ejecutar la función de detección de objetos con una imagen de ejemplo.
« `python
# Ruta de la imagen de ejemplo
imagen_path = « rutaatuimagen.jpg »
# Realizar la detección de objetos
detecciones = detectar_objetos(imagen_path)
# Imprimir las detecciones
print(« Detecciones de Objetos: »)
for etiqueta in detecciones:
for (clase_id, descripcion, confianza) in etiqueta:
print(f »{descripcion}: {confianza 100:.2f}% »)
« `
### Conclusión
Este código proporciona una introducción básica a la detección de objetos usando computer vision en Python. Aunque el modelo utilizado es simple y no está específicamente entrenado para detección de objetos, sirve como un punto de partida para explorar técnicas más avanzadas como `YOLO`, `SSD` o `Faster R-CNN`. La computer vision es un campo en constante evolución con aplicaciones cada vez más diversas y sofisticadas.