8. Librerías fundamentales para visión por computadora

8.1 Introducción

En visión por computadora no trabajamos solo con algoritmos, sino también con un ecosistema de herramientas que hace posible cargar imágenes, transformarlas, visualizarlas, entrenar modelos y desplegar soluciones. Elegir bien las librerías adecuadas simplifica enormemente el desarrollo.

Python se convirtió en uno de los lenguajes más usados en este campo justamente porque dispone de un conjunto muy sólido de bibliotecas. Algunas están orientadas al procesamiento clásico de imágenes, otras al cálculo numérico, otras al aprendizaje profundo y otras a la visualización o gestión de datasets.

En este tema vamos a organizar esas herramientas y entender para qué sirve cada una. La idea no es memorizar una lista, sino comprender cómo se complementan dentro de un flujo real de trabajo.

8.2 Una visión general del ecosistema

Podemos dividir las librerías más importantes en varias categorías:

  • Manipulación numérica.
  • Procesamiento de imágenes.
  • Visualización.
  • Deep Learning.
  • Gestión de datasets y entrenamiento.
  • Herramientas auxiliares para producción.

Esta clasificación ayuda a entender que, en la práctica, rara vez una sola librería resuelve todo. Lo habitual es combinar varias según la etapa del proyecto.

Un proyecto de visión por computadora suele construirse como un sistema de piezas complementarias: una librería para leer imágenes, otra para manipular arreglos, otra para visualizar y otra para entrenar modelos.

8.3 NumPy: la base numérica

NumPy es probablemente la librería más básica e importante del ecosistema científico en Python. En visión por computadora tiene un papel central porque las imágenes suelen representarse como arreglos multidimensionales.

Con NumPy podemos:

  • Inspeccionar la forma de una imagen.
  • Acceder a regiones mediante slicing.
  • Aplicar operaciones vectorizadas.
  • Transformar tipos de dato.
  • Combinar, apilar o reorganizar arreglos.

Muchas otras librerías se apoyan directamente en NumPy. Por eso entender bien los arreglos, dimensiones y tipos numéricos es una habilidad fundamental.

8.4 OpenCV: la herramienta clásica más importante

OpenCV es una de las bibliotecas más influyentes y utilizadas en visión por computadora. Su nombre proviene de Open Source Computer Vision Library.

OpenCV ofrece herramientas para:

  • Cargar y guardar imágenes y video.
  • Transformar espacios de color.
  • Aplicar filtros.
  • Detectar bordes, contornos y puntos de interés.
  • Realizar transformaciones geométricas.
  • Trabajar con cámaras y flujos de video.
  • Integrar modelos de Deep Learning en inferencia.

Es una biblioteca extremadamente práctica, rápida y madura. Por eso ocupa un lugar central en la parte clásica del curso y también en muchos proyectos productivos.

8.5 ¿Por qué OpenCV sigue siendo tan relevante?

Aunque hoy el Deep Learning tiene mucho protagonismo, OpenCV sigue siendo clave por varias razones:

  • Resuelve muy bien tareas básicas y clásicas.
  • Es eficiente y ampliamente adoptada.
  • Permite prototipado rápido.
  • Se integra bien con cámaras, video y archivos multimedia.
  • Complementa perfectamente modelos aprendidos.

En muchos sistemas reales, el preprocesamiento se hace con OpenCV, el modelo se ejecuta con PyTorch y la visualización final vuelve a pasar por OpenCV o herramientas similares.

8.6 Pillow: manejo simple de imágenes

Pillow es la evolución moderna de la antigua biblioteca PIL. Está más orientada al manejo general de imágenes que a la visión por computadora estricta, pero sigue siendo muy útil.

Se utiliza con frecuencia para:

  • Abrir imágenes de forma simple.
  • Convertir entre modos de color.
  • Redimensionar o recortar.
  • Guardar imágenes en distintos formatos.
  • Integrarse con flujos de datos en Python.

En proyectos de Deep Learning es habitual encontrarla en el pipeline de carga de datos, especialmente en combinación con torchvision.

8.7 Matplotlib: visualización y depuración

Matplotlib no es una librería específica de visión por computadora, pero es fundamental para visualizar resultados. Permite mostrar imágenes, histogramas, gráficos y comparaciones entre transformaciones.

Su valor principal está en:

  • Inspección visual de imágenes en notebooks.
  • Comparar etapas de procesamiento.
  • Mostrar curvas de entrenamiento.
  • Visualizar errores o ejemplos concretos.

Muchas veces es la herramienta más cómoda para depurar pipelines y entender qué está ocurriendo internamente.

8.8 scikit-image

scikit-image es una biblioteca orientada al procesamiento de imágenes y análisis científico. Comparte parte del terreno de OpenCV, pero con un estilo muy integrado al ecosistema científico de Python.

Es útil para:

  • Segmentación.
  • Filtrado.
  • Medición de regiones.
  • Operaciones morfológicas.
  • Procesamiento de imágenes científicas.

En entornos académicos y experimentales aparece con bastante frecuencia, especialmente cuando interesa claridad y consistencia con NumPy y SciPy.

8.9 SciPy y el ecosistema científico

SciPy complementa a NumPy con herramientas matemáticas más avanzadas: optimización, señales, interpolación, álgebra, estadística y más. En visión por computadora puede aparecer en tareas específicas como filtrado, transformaciones o análisis numérico.

Aunque no siempre se use de forma visible en cada proyecto, forma parte del ecosistema base sobre el que se apoyan muchas herramientas científicas en Python.

8.10 PyTorch: Deep Learning para visión

PyTorch es una de las bibliotecas más importantes para Deep Learning y tendrá un papel central en la segunda mitad del curso. Permite trabajar con tensores, definir modelos, calcular gradientes automáticamente y entrenar redes neuronales.

En visión por computadora se usa para:

  • Construir redes convolucionales.
  • Entrenar clasificadores de imágenes.
  • Aplicar transfer learning.
  • Trabajar con modelos preentrenados.
  • Resolver tareas de detección y segmentación.

Su fortaleza está en combinar flexibilidad, potencia y un ecosistema muy activo.

8.11 torchvision

torchvision es una biblioteca complementaria de PyTorch especialmente orientada a tareas de visión por computadora. Proporciona herramientas que simplifican muchísimo el trabajo práctico.

Entre sus funcionalidades más útiles están:

  • Datasets ya preparados.
  • Transformaciones para imágenes.
  • Modelos preentrenados.
  • Utilidades para clasificación, detección y segmentación.

En otras palabras, si PyTorch es el motor general de Deep Learning, torchvision es una capa especializada para visión.

8.12 Albumentations y data augmentation

Cuando se trabaja con entrenamiento de modelos de visión, una necesidad frecuente es aplicar aumentos de datos: rotaciones, recortes, cambios de brillo, ruido, flips y otras transformaciones aleatorias.

Albumentations es una biblioteca muy usada para este propósito porque:

  • Es rápida.
  • Está pensada específicamente para visión.
  • Permite aplicar transformaciones consistentes sobre imágenes, máscaras y cajas.
  • Se integra bien con pipelines modernos.

Más adelante, cuando veamos data augmentation, este tipo de herramienta cobrará especial importancia.

8.13 Pandas y metadatos

Pandas no procesa imágenes directamente, pero es muy útil para trabajar con etiquetas, rutas, particiones de datasets, metadatos y resultados experimentales.

Por ejemplo, puede usarse para:

  • Leer archivos CSV con etiquetas.
  • Organizar nombres de imágenes y clases.
  • Construir tablas de métricas.
  • Analizar predicciones.

En proyectos reales, los datos visuales casi siempre vienen acompañados de información estructurada, y ahí Pandas se vuelve muy valioso.

8.14 Matrices, tensores y transiciones entre librerías

Una cuestión práctica muy importante es que distintas bibliotecas usan estructuras internas similares, pero no idénticas:

  • OpenCV suele trabajar con arreglos de NumPy.
  • Pillow usa objetos de imagen propios.
  • PyTorch usa tensores.

Por eso, en un pipeline real, es normal pasar por varias conversiones:

  • Archivo de imagen a objeto Pillow.
  • Objeto Pillow a arreglo NumPy.
  • Arreglo NumPy a tensor PyTorch.

Entender estas transiciones ayuda a evitar errores de tipo, de forma o de orden de canales.

8.15 Librerías para anotación y datasets

Además de procesar imágenes, un proyecto de visión necesita organizar datos. Dependiendo del problema, esto puede implicar:

  • Etiquetas de clasificación.
  • Cajas delimitadoras.
  • Máscaras de segmentación.
  • Puntos clave.

Aunque la anotación en sí muchas veces se hace con herramientas externas, desde Python solemos necesitar cargar y convertir esos formatos. Aquí aparecen utilidades propias del proyecto, scripts con JSON, CSV o formatos tipo COCO y Pascal VOC.

8.16 Librerías para inferencia y deployment

Cuando un modelo ya está entrenado, el problema cambia: ahora importa cómo ejecutar inferencia de forma eficiente. En esta etapa pueden aparecer herramientas como:

  • OpenCV para pre y postprocesamiento.
  • PyTorch para inferencia directa.
  • ONNX y runtimes optimizados.
  • Frameworks de serving.

Aunque veremos deployment más adelante, conviene ir entendiendo que las librerías también se eligen según la fase del proyecto: investigación, entrenamiento, validación o producción.

8.17 Librerías para notebooks y exploración

En etapas iniciales de exploración y enseñanza, suelen ser muy útiles herramientas como:

  • Jupyter Notebook.
  • Google Colab.
  • Matplotlib.
  • Seaborn para algunas visualizaciones estadísticas.

No son bibliotecas de visión por computadora estrictamente hablando, pero forman parte del entorno real en el que se construyen, prueban y explican soluciones visuales.

8.18 Cómo se combinan en un flujo real

Un flujo práctico de trabajo con imágenes podría usar estas herramientas de la siguiente manera:

  1. Leer imágenes con OpenCV o Pillow.
  2. Manipularlas con NumPy.
  3. Visualizarlas con Matplotlib.
  4. Aplicar transformaciones con OpenCV o torchvision.
  5. Entrenar un modelo con PyTorch.
  6. Organizar etiquetas y resultados con Pandas.
  7. Guardar o desplegar la solución con herramientas de inferencia.

Este esquema muestra que el trabajo real rara vez depende de una sola librería aislada.

8.19 Criterios para elegir una librería

No siempre necesitamos la misma herramienta. Para elegir conviene considerar:

  • El tipo de tarea: procesamiento clásico o Deep Learning.
  • La facilidad de uso.
  • La eficiencia.
  • La integración con el resto del stack.
  • La disponibilidad de documentación y comunidad.
  • La etapa del proyecto.

Por ejemplo, para leer y transformar imágenes rápidamente, OpenCV puede ser ideal. Para entrenamiento de redes, PyTorch es la herramienta central. Para explorar resultados, Matplotlib suele ser suficiente.

8.20 Una advertencia importante: no duplicar complejidad

Al empezar, es común usar demasiadas librerías a la vez sin una razón clara. Esto puede generar conversiones innecesarias, confusión con formatos o errores difíciles de rastrear.

En general conviene adoptar un criterio pragmático:

  • Elegir una librería principal para carga y preprocesamiento.
  • Mantener una representación interna consistente.
  • Convertir solo cuando realmente sea necesario.

La simplicidad del pipeline suele mejorar tanto la claridad del código como la reproducibilidad.

En visión por computadora, usar más herramientas no siempre implica un mejor sistema. Lo importante es que cada librería tenga un rol claro dentro del pipeline.

8.21 Ejemplo mínimo de stack práctico

Un stack razonable para comenzar este curso podría ser:

  • NumPy para arreglos y operaciones numéricas.
  • OpenCV para lectura, conversión y procesamiento clásico.
  • Matplotlib para visualización.
  • PyTorch y torchvision para Deep Learning.
  • Pandas para etiquetas y resultados.

Con este conjunto ya es posible construir desde ejemplos introductorios hasta proyectos bastante serios.

8.22 Librerías que veremos más adelante en el curso

En la primera parte práctica del curso, OpenCV y NumPy tendrán mucho protagonismo. Más adelante, cuando pasemos a clasificación, CNN y modelos preentrenados, crecerá la importancia de PyTorch y torchvision.

Esto significa que el curso seguirá una progresión coherente:

  • Primero entender la imagen y manipularla.
  • Después aplicar procesamiento clásico.
  • Luego construir y entrenar modelos.
  • Finalmente desplegar soluciones.

Las librerías acompañan esa progresión técnica.

8.23 Resumen comparativo

Librería Rol principal Uso típico
NumPy Base numérica Arreglos, slicing, operaciones vectorizadas.
OpenCV Procesamiento clásico y video Carga, filtros, transformaciones, cámaras.
Pillow Manejo general de imágenes Abrir, convertir y guardar imágenes.
Matplotlib Visualización Mostrar imágenes, histogramas y curvas.
scikit-image Procesamiento científico Segmentación, medición y análisis de regiones.
PyTorch Deep Learning Entrenamiento e inferencia de modelos.
torchvision Visión en PyTorch Datasets, transformaciones y modelos preentrenados.
Pandas Datos tabulares Etiquetas, CSV, métricas y análisis.

8.24 Qué debes recordar de este tema

  • La visión por computadora en Python se apoya en un ecosistema de librerías complementarias.
  • NumPy es la base para representar y manipular imágenes como arreglos.
  • OpenCV es la herramienta más importante para procesamiento clásico, imágenes y video.
  • Pillow facilita el manejo general de imágenes y aparece mucho en pipelines de carga.
  • Matplotlib es clave para inspección y visualización.
  • PyTorch y torchvision serán centrales en la parte de Deep Learning del curso.
  • Elegir pocas herramientas bien integradas suele ser mejor que mezclar demasiadas sin criterio.

8.25 Conclusión

Conocer las librerías fundamentales de visión por computadora permite entender mejor cómo se construye un flujo real de trabajo. Cada herramienta tiene su especialidad, y la clave está en combinarlas de forma coherente según el problema a resolver.

En la siguiente etapa del curso vamos a centrarnos en una de las bibliotecas más importantes de todas: OpenCV. El próximo tema será una introducción específica a esta herramienta, que nos acompañará durante buena parte de la práctica inicial.