Inicio > Cursos > Computer Vision con Python > Procesamiento de imagenes
Computer Vision con PythonFundamentos de VisionLección 2 de 12

Procesamiento de imagenes

El preprocesamiento es fundamental antes de cualquier analisis. Las imagenes "crudas" tienen ruido, iluminacion irregular y detalles irrelevantes.

Operaciones basicas:

• Resize: Cambiar tamano (para modelos que requieren input fijo) • Blur/Smooth: Suavizar para reducir ruido (Gaussian, Median, Bilateral) • Threshold: Convertir a blanco/negro segun un umbral • Edge Detection: Encontrar bordes (Canny, Sobel, Laplacian) • Morphology: Erosion, dilatacion, opening, closing • Color spaces: BGR → HSV (para segmentar colores), BGR → LAB • ROI (Region of Interest): Recortar la parte relevante

Pipeline tipico: 1. Cargar imagen 2. Resize a tamano estandar 3. Convertir a gris (si no necesitas color) 4. Aplicar blur para reducir ruido 5. Aplicar threshold o edge detection 6. Encontrar contornos 7. Analizar/clasificar

import cv2
import numpy as np

def process_image(img):
    """Pipeline de procesamiento completo"""
    # 1. Resize
    resized = cv2.resize(img, (640, 480))
    
    # 2. Convertir a gris
    gray = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)
    
    # 3. Blur para reducir ruido
    blurred = cv2.GaussianBlur(gray, (5, 5), 0)
    
    # 4. Deteccion de bordes (Canny)
    edges = cv2.Canny(blurred, 50, 150)
    
    # 5. Encontrar contornos
    contours, _ = cv2.findContours(
        edges, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE
    )
    
    # 6. Dibujar contornos
    result = resized.copy()
    cv2.drawContours(result, contours, -1, (0, 255, 0), 2)
    
    print(f"Contornos encontrados: {len(contours)}")
    return result, contours

def segment_color(img, lower_hsv, upper_hsv):
    """Segmentar objetos por color usando HSV"""
    hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    mask = cv2.inRange(hsv, lower_hsv, upper_hsv)
    
    # Limpiar mascara
    kernel = np.ones((5, 5), np.uint8)
    mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)
    mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)
    
    # Aplicar mascara a imagen original
    result = cv2.bitwise_and(img, img, mask=mask)
    return result, mask

# Ejemplo: detectar objetos rojos
# lower_red = np.array([0, 100, 100])
# upper_red = np.array([10, 255, 255])
# result, mask = segment_color(img, lower_red, upper_red)
ConsejoPara segmentar colores, SIEMPRE convierte a HSV primero. En HSV el color (Hue) esta separado del brillo, asi que la deteccion funciona con diferentes iluminaciones.
← Como ve una computadoraHistogramas y Mejora de Contraste →

Practica esta lección

Resuelve los ejercicios del curso de Computer Vision con Python en la app, gratis y con corrección automática.

Empezar a practicar