Procesamiento de Imágenes con OpenCV y Python

OpenCV es una biblioteca de código abierto para visión por computadora que ofrece una amplia gama de algoritmos de procesamiento de imágenes. Compatible con múltiples lenguajes como Python y C++, facilita tareas como manipulación, reconocimiento y síntesis de imágenes.

Instalación de OpenCV

Para comenzar, instale la librería usando pip:

pip install opencv-python

Luego, impórtela en su script:

import cv2

Visualiazción y Almacenamiento de Imágenes

Este ejemplo muestra cómo cargar, exhibir y guardar una imagen con OpenCV.

import cv2

# Cargar una imagen desde archivo
foto = cv2.imread('foto_ejemplo.jpg')

# Exhibir en una ventana
cv2.imshow('Ventana', foto)
cv2.waitKey(0)
cv2.destroyAllWindows()

# Guardar la imagen procesada
cv2.imwrite('resultado.jpg', foto)

Transformaciones Geométricas

Las transformaciones geométricas incluyen escalar, rotar y recortar imágenes, esenciales para tareas como alineación y mejora visual.

import cv2

foto = cv2.imread('foto_ejemplo.jpg')

# Escalar a nuevas dimensiones
imagen_escalada = cv2.resize(foto, (400, 400))

# Rotar 90 grados en sentido horario
imagen_rotada = cv2.rotate(foto, cv2.ROTATE_90_CLOCKWISE)

# Recortar una región específica (filas y columnas)
imagen_recortada = foto[50:250, 80:280]

# Mostrar resultados
cv2.imshow('Escalada', imagen_escalada)
cv2.imshow('Rotada', imagen_rotada)
cv2.imshow('Recortada', imagen_recortada)
cv2.waitKey(0)
cv2.destroyAllWindows()

Mejora de Contraste y Eliminación de Ruido

La mejora de imágenes ajusta propiedades como el contraste para realzar detalles. La eliminación de ruido recupera calidad eliminando distorsiones.

import cv2

# Mejora de contraste
imagen_original = cv2.imread('foto_baja_calidad.jpg')
imagen_mejorada = cv2.convertScaleAbs(imagen_original, alpha=1.8, beta=10)

# Eliminación de ruido en imagen a color
imagen_ruidosa = cv2.imread('foto_ruidosa.jpg')
imagen_limpia = cv2.fastNlMeansDenoisingColored(imagen_ruidosa, None, 12, 12, 7, 21)

cv2.imshow('Contraste Mejorado', imagen_mejorada)
cv2.imshow('Sin Ruido', imagen_limpia)
cv2.waitKey(0)
cv2.destroyAllWindows()

Segmentación por Color y Detección de Bordes

La segmentación aísla objetos basándose en rangos de color. La detección de bordes identifica contornos en la imagen.

import cv2

# Segmentación por color (ejemplo para tonos azules)
imagen_color = cv2.imread('imagen_multicolor.jpg')
bajo_azul = (100, 50, 50)
alto_azul = (130, 255, 255)
mascara = cv2.inRange(imagen_color, bajo_azul, alto_azul)

# Detección de bordes con el algoritmo Canny
imagen_gris = cv2.cvtColor(imagen_color, cv2.COLOR_BGR2GRAY)
bordes = cv2.Canny(imagen_gris, 50, 150)

cv2.imshow('Mascara Azul', mascara)
cv2.imshow('Bordes Detectados', bordes)
cv2.waitKey(0)
cv2.destroyAllWindows()

Optimización y Consideraciones Prácticas

Ajustar el tamaño de la imagen puede reducir el uso de memoria y acelerar el procesamiento. Cambiar formatos de archivo equilibra calidad y almacenamiento.

import cv2

imagen_grande = cv2.imread('imagen_grande.jpg')

# Redimensionar con interpolación para reducir resolución
imagen_reducida = cv2.resize(imagen_grande, (300, 300), interpolation=cv2.INTER_AREA)

# Convertir formato de JPEG a PNG
cv2.imwrite('imagen_convertida.png', imagen_grande)

cv2.imshow('Reducida', imagen_reducida)
cv2.waitKey(0)
cv2.destroyAllWindows()

Etiquetas: opencv Python procesamiento de imágenes Visión por Computadora segmentación

Publicado el 7-11 01:28