El script etiquetar.py es una aplicación de escritorio desarrollada con PyQt5 que permite visualizar y etiquetar imágenes almacenadas en una base de datos MongoDB. Específicamente, se utiliza para:
La aplicación es útil para tareas de organización y catalogación de imágenes, especialmente en contextos donde se necesita clasificar o indexar contenido visual con metadatos como nombres de personas.
El script se ejecuta desde la línea de comandos con python3 etiquetar.py y abre una ventana gráfica azul oscura (tema personalizado). A continuación, se explica paso a paso cómo opera la aplicación:
Al iniciar, el script se conecta a una base de datos MongoDB local (localhost, puerto 27017). Se conecta a la base de datos llamada 'album' y a la colección 'imagenes_2'. Si no encuentra imágenes en la base de datos, muestra un mensaje de error y se cierra.
# Ejemplo de conexión
self.client = MongoClient('localhost', 27017)
self.db = self.client['album']
self.collection = self.db['imagenes_2']
El script consulta todas las imágenes de la colección. Cada imagen debe tener al menos un campo 'ruta' (ubicación del archivo de imagen) y opcionalmente 'personas' (lista de nombres de personas ya etiquetadas).
Al cargar cada imagen, la dimensión se ajusta a un ancho de 515 píxeles manteniendo la proporción de aspecto.
La ventana principal tiene:
Botones principales:
Para etiquetar una imagen:
El menú desplegable se actualiza dinámicamente con nuevas personas agregadas.
Usa los botones "Anterior" y "Siguiente" para moverte por las imágenes. Si intentas ir más allá de la primera o última imagen, se muestra un mensaje informativo.
Para eliminar una imagen:
Cierra la ventana para salir. Ningún cambio queda pendiente de guardar, ya que los etiquetados se actualizan en tiempo real en la base de datos.
Instala las dependencias con pip install PyQt5 pymongo.
La colección 'imagenes_2' debe contener documentos con la siguiente estructura aproximada:
{
"_id": ObjectId,
"ruta": "/ruta/a/la/imagen.jpg",
"nombre": "nombrerelativo.jpg",
"personas": ["Persona1", "Persona2"]
}
El campo 'personas' es una lista de strings con los nombres. Si no existe, se crea automáticamente al agregar la primera etiqueta.
Ejecuta el script:
python3 etiquetar.py
En la interfaz:
Este tutorial cubre los aspectos básicos. Para más detalles, revisa el código fuente comentado.