Procesamiento de Imágenes y Video en Jupyter con OpenCV

Procesamiento de Imágenes y Video en Jupyter con OpenCV

Introducción

OpenCV es una biblioteca de código abierto para el procesamiento de imágenes y video. Es una herramienta poderosa que se puede utilizar para una amplia gama de tareas, desde el reconocimiento facial hasta la detección de objetos. En este tutorial, aprenderemos a usar OpenCV en Jupyter Notebook para realizar tareas básicas de procesamiento de imágenes y video.

Requisitos previos

Para seguir este tutorial, deberá tener instalado lo siguiente:

  • Python 3
  • Jupyter Notebook
  • OpenCV

Instalando OpenCV

Para instalar OpenCV en Python, podemos usar el administrador de paquetes de Python o descargar el código fuente de OpenCV y compilarlo nosotros mismos.

Usando el administrador de paquetes de Python

Para instalar OpenCV usando el administrador de paquetes de Python, podemos usar el siguiente comando:

pip install opencv-python

Descargando el código fuente de OpenCV

Para descargar el código fuente de OpenCV, podemos ir al sitio web de OpenCV y hacer clic en el enlace de descarga. Una vez que se haya descargado el código fuente, podemos compilarlo usando el siguiente comando:

python setup.py build

Configurando OpenCV

Una vez que OpenCV esté instalado, debemos configurarlo para que funcione con Jupyter Notebook. Para hacer esto, podemos agregar las siguientes líneas al archivo kernel.json de nuestro kernel de Jupyter:

{
  "display_name": "Python with OpenCV",
  "language_info": {
    "name": "python",
    "version": "3.8.10",
    "codemirror_mode": {
      "name": "ipython",
      "version": 3
    }
  },
  "argv": [
    "python",
    "-m",
    "ipykernel",
    "-f",
    "notebook.json"
  ],
  "env": {
    "PYTHONPATH": "/usr/local/lib/python3.8/site-packages"
  }
}

Leyendo y mostrando imágenes

Para leer una imagen en OpenCV, podemos usar la función imread(). Esta función toma la ruta de la imagen como argumento y devuelve una matriz de NumPy que contiene la imagen.

Python
import cv2

img = cv2.imread("image.jpg")

Para mostrar una imagen en OpenCV, podemos usar la función imshow(). Esta función toma la ventana de visualización como argumento y la imagen a mostrar.

Python
cv2.imshow("Imagen", img)

Guardando imágenes

Para guardar una imagen en OpenCV, podemos usar la función imwrite(). Esta función toma la ruta del archivo de imagen como argumento y la imagen a guardar.

Python
cv2.imwrite("image_out.jpg", img)

Filtrando imágenes

OpenCV proporciona una amplia gama de filtros que se pueden usar para modificar imágenes. Algunos de los filtros más comunes incluyen:

  • Binarización: Convierte una imagen a blanco y negro.
  • Suavizado: Suaviza los bordes de una imagen.
  • Enhance: Mejora el contraste y la nitidez de una imagen.

Para aplicar un filtro a una imagen, podemos usar la función filter2D(). Esta función toma la imagen como argumento y la matriz del filtro.

Python
import cv2

img = cv2.imread("image.jpg")

# Aplicar un filtro de suavizado
filtered_img = cv2.filter2D(img, -1, kernel)

cv2.imshow("Imagen filtrada", filtered_img)

Segmentando imágenes

La segmentación de imágenes es el proceso de dividir una imagen en regiones. OpenCV proporciona una amplia gama de algoritmos de segmentación que se pueden usar para este propósito. Algunos de los algoritmos de segmentación más comunes incluyen:

  • K-means: Divide una imagen en un número dado de regiones.
  • Otsu: Divide una imagen en dos regiones.
  • SLIC: Divide una imagen en regiones superpuestas.

Para segmentar una imagen, podemos usar la función cv2.connectedComponents(). Esta función toma la imagen como argumento y devuelve una matriz que contiene las regiones de la imagen.

Python
import cv2

img = cv2