Inicio > Cursos > Computer Vision con Python > Detección de Bordes y Filtros
Computer Vision con PythonComputer Vision AvanzadoLección 10 de 12

Detección de Bordes y Filtros

Los filtros son operaciones matemáticas que se aplican a cada píxel usando sus vecinos (convolución). El filtro Gaussiano suaviza la imagen eliminando ruido — esencial como paso previo a la detección de bordes. El operador Sobel detecta gradientes (cambios de intensidad) en dirección horizontal o vertical. El detector Canny combina Sobel + supresión de no-máximos + doble umbral para producir bordes limpios y delgados.

import cv2
import numpy as np

img = cv2.imread("edificio.jpg", cv2.IMREAD_GRAYSCALE)

# 1. Filtro Gaussiano — suaviza, elimina ruido
suave = cv2.GaussianBlur(img, (5, 5), sigmaX=1.5)

# 2. Sobel — detecta gradientes (bordes en X o Y)
sobel_x = cv2.Sobel(suave, cv2.CV_64F, 1, 0, ksize=3)  # Bordes verticales
sobel_y = cv2.Sobel(suave, cv2.CV_64F, 0, 1, ksize=3)  # Bordes horizontales
sobel_mag = np.sqrt(sobel_x**2 + sobel_y**2)
sobel_mag = np.uint8(sobel_mag / sobel_mag.max() * 255)

# 3. Canny — detector de bordes completo
bordes = cv2.Canny(suave, threshold1=50, threshold2=150)
# threshold1 = umbral bajo (bordes débiles)
# threshold2 = umbral alto (bordes fuertes)

# 4. Encontrar contornos a partir de bordes
contornos, _ = cv2.findContours(bordes, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
print(f"Objetos encontrados: {len(contornos)}")

# Dibujar contornos en la imagen original
img_color = cv2.imread("edificio.jpg")
cv2.drawContours(img_color, contornos, -1, (0, 255, 0), 2)

# 5. Umbralización (segmentación por brillo)
_, binaria = cv2.threshold(suave, 127, 255, cv2.THRESH_BINARY)
adaptive = cv2.adaptiveThreshold(suave, 255,
    cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
ConsejoPipeline clásico: Imagen → Gaussiano (quitar ruido) → Canny (bordes) → findContours (objetos). Este flujo funciona para detección de formas, OCR preparatorio, y segmentación básica.
← Proyecto: Contador de personasRedes Neuronales Convolucionales (CNN) →

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