Qué es OpenCV: historia, módulos y ecosistema

Básico
OpenCV
OpenCV
Actualizado: 18/04/2026

Qué es OpenCV

OpenCV (Open Source Computer Vision Library) es la biblioteca de código abierto más utilizada para visión por computador y procesamiento de imágenes. Con más de 2500 algoritmos optimizados y más de 18 millones de descargas, OpenCV se ha convertido en la herramienta de referencia para cualquier proyecto que trabaje con imágenes o vídeos.

La biblioteca está escrita principalmente en C y C++, lo que le confiere un rendimiento muy elevado. Su interfaz para Python (el módulo cv2) permite acceder a toda esa potencia desde Python de forma sencilla, aprovechando la integración nativa con NumPy.

import cv2

# Verificar la versión instalada
print(cv2.__version__)  # p. ej. 4.9.0
print(cv2.getBuildInformation())  # información detallada de compilación

Historia de OpenCV

OpenCV nació en Intel Research en 1999, cuando Gary Bradski y su equipo comenzaron a desarrollar una biblioteca interna para acelerar los proyectos de visión artificial. En el año 2000 se publicó la primera versión alfa bajo licencia BSD, lo que permitió su uso libre tanto en proyectos académicos como comerciales.

Los hitos más relevantes son:

  • 2000: Primera versión pública (alfa) desarrollada por Intel.
  • 2006: OpenCV 1.0, primera versión estable con soporte oficial para Windows, Linux y macOS.
  • 2009: OpenCV 2.x, reescritura parcial con interfaz C++ y mejoras de rendimiento.
  • 2015: OpenCV 3.0, nuevo módulo opencv_contrib con algoritmos extra, soporte CUDA mejorado.
  • 2018: OpenCV 4.0, compatible con C++11/14, módulo DNN mejorado, soporte ONNX.
  • 2023-2024: OpenCV 4.8-4.9, mejoras en el módulo DNN, CUDA y soporte para modelos modernos.

Desde 2012, OpenCV está mantenido por la OpenCV Foundation, una organización sin ánimo de lucro que coordina los contribuidores de todo el mundo.

Arquitectura y módulos principales

OpenCV está organizado en módulos, cada uno especializado en un área de visión por computador. Los módulos principales que se incluyen en opencv-python son:

| Módulo | Nombre interno | Función principal | |--------|----------------|-------------------| | core | cv2 | Tipos de datos, arrays, operaciones matemáticas | | imgproc | cv2. | Procesamiento de imágenes: filtros, bordes, contornos | | highgui | cv2. | Lectura/escritura de imágenes y vídeo, ventanas | | imgcodecs | cv2. | Codecs de imagen: JPEG, PNG, TIFF, etc. | | videoio | cv2. | Captura y escritura de vídeo | | video | cv2. | Flujo óptico, sustracción de fondo | | calib3d | cv2. | Calibración de cámara, geometría 3D, homografía | | features2d | cv2. | Detección de características: SIFT, ORB, BRISK | | objdetect | cv2. | Detección de objetos: Haar Cascades, HOG | | dnn | cv2.dnn | Deep learning: carga y ejecución de redes neuronales | | ml | cv2.ml | Machine learning clásico: SVM, KNN, árboles |

import cv2

# Ver todos los módulos disponibles
modulos = [attr for attr in dir(cv2) if not attr.startswith('_')]
print(f"Número de atributos en cv2: {len(modulos)}")

# Verificar si el módulo DNN está disponible
print(hasattr(cv2, 'dnn'))  # True si está compilado con DNN

opencv-python vs opencv-contrib-python

Existen dos distribuciones principales de OpenCV para Python:

opencv-python: Incluye los módulos principales estables. Suficiente para la gran mayoría de proyectos.

pip install opencv-python

opencv-contrib-python: Incluye los módulos principales más los módulos contribuidos (opencv_contrib). Contiene algoritmos más experimentales o con restricciones de patentes como SIFT, SURF y algunos algoritmos de tracking.

pip install opencv-contrib-python

Importante: no instales ambos paquetes a la vez en el mismo entorno, ya que generarán conflictos. Elige uno u otro.

import cv2

# Comprobar si SIFT está disponible (requiere opencv-contrib-python)
try:
    sift = cv2.SIFT_create()
    print("SIFT disponible: usando opencv-contrib-python")
except AttributeError:
    print("SIFT no disponible: instala opencv-contrib-python")

Ecosistema de visión artificial en Python

OpenCV no trabaja en solitario. Forma parte de un ecosistema más amplio:

NumPy: Las imágenes en OpenCV son arrays NumPy. Toda la manipulación de píxeles se beneficia de las operaciones vectorizadas de NumPy.

Matplotlib: Para visualizar imágenes en Jupyter Notebooks, Matplotlib es la opción habitual (recordando convertir de BGR a RGB).

Scikit-image: Biblioteca complementaria de procesamiento de imágenes con un enfoque más científico y orientada a NumPy nativo.

Pillow (PIL): Para operaciones simples de imagen (abrir, guardar, convertir formatos) con una API más sencilla.

TensorFlow / PyTorch: Frameworks de deep learning que se integran con OpenCV para preprocesar imágenes antes de pasarlas a modelos de redes neuronales.

import cv2
import numpy as np
import matplotlib.pyplot as plt

# Workflow típico: OpenCV procesa, Matplotlib visualiza
imagen = cv2.imread("foto.jpg")
gris = cv2.cvtColor(imagen, cv2.COLOR_BGR2GRAY)
bordes = cv2.Canny(gris, 50, 150)

fig, axes = plt.subplots(1, 3, figsize=(15, 5))
axes[0].imshow(cv2.cvtColor(imagen, cv2.COLOR_BGR2RGB))
axes[0].set_title("Original (RGB)")
axes[1].imshow(gris, cmap="gray")
axes[1].set_title("Escala de grises")
axes[2].imshow(bordes, cmap="gray")
axes[2].set_title("Bordes Canny")
for ax in axes:
    ax.axis("off")
plt.tight_layout()
plt.show()

Pipeline general de visión por computador

El procesamiento de imágenes sigue un flujo bien definido desde la captura hasta la obtención de resultados:

flowchart TD
    A[Adquisición de imagen] --> B[Preprocesado]
    B --> C[Segmentación]
    C --> D[Extracción de características]
    D --> E[Clasificación / Detección]
    E --> F[Resultado final]
    B --> |Filtros, redimensionado| C
    C --> |Regiones de interés| D
    D --> |Descriptores, histogramas| E

Cada uno de estos pasos se corresponde con módulos y funciones concretas de OpenCV. El módulo imgproc cubre el preprocesado y la segmentación, features2d la extracción de características, y dnn junto con objdetect la clasificación y detección.

Campos de aplicación

La versatilidad de OpenCV la hace presente en múltiples sectores:

  • Robótica: Percepción visual, navegación autónoma, detección de obstáculos.
  • Automoción: Conducción autónoma, detección de peatones, señales de tráfico y carriles.
  • Medicina: Análisis de imágenes radiológicas, histología computacional, detección de tumores.
  • Seguridad y vigilancia: Detección facial, reconocimiento de matrículas, análisis de multitudes.
  • Industria: Control de calidad visual, inspección de defectos, guiado de robots en líneas de montaje.
  • Agricultura: Detección de enfermedades en cultivos mediante imágenes aéreas (drones).
  • Realidad aumentada: Seguimiento de marcadores, superposición de objetos 3D.
  • Entretenimiento: Efectos especiales, captura de movimiento, procesamiento de vídeo en tiempo real.

OpenCV es una tecnología transversal: independientemente de tu sector, si necesitas analizar imágenes o vídeos de forma automatizada, OpenCV es el punto de partida natural.

Alan Sastre - Autor del tutorial

Alan Sastre

Ingeniero de Software y formador, CEO en CertiDevs

Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, OpenCV es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.

Más tutoriales de OpenCV

Explora más contenido relacionado con OpenCV y continúa aprendiendo con nuestros tutoriales gratuitos.

Aprendizajes de esta lección

Comprender qué es OpenCV y cuál es su lugar en el ecosistema de visión por computador. Conocer la historia de OpenCV desde Intel hasta su versión actual 4.x. Identificar los módulos principales (core, imgproc, highgui, dnn, video, calib3d, features2d). Distinguir entre opencv-python y opencv-contrib-python. Reconocer los campos de aplicación de OpenCV: robótica, vigilancia, medicina, automoción.