
03: Captura y procesamiento de imágenes con OpenCV
La captura y procesamiento de imágenes es una de las tareas fundamentales en el campo de la visión artificial. OpenCV proporciona una gran cantidad de funciones y herramientas para esta tarea, lo que lo convierte en una opción ideal para el desarrollo de sistemas de visión artificial. En este post, veremos cómo utilizar OpenCV para capturar y procesar imágenes en Python.
La primera tarea es la captura de imágenes. OpenCV proporciona la función cv2.VideoCapture()
para capturar imágenes desde una cámara o un archivo de video. Esta función toma como parámetro el índice de la cámara o la ruta del archivo de video. Por ejemplo, si queremos capturar imágenes desde la cámara web predeterminada, podemos utilizar el siguiente código:
import cv2 cap = cv2.VideoCapture(0) #Cargamos webcam
Una vez que hemos creado un objeto de captura, podemos utilizar el método read()
para capturar una imagen. Este método devuelve una tupla que contiene un indicador de éxito (True o False) y la imagen ‘frame’ capturada. Por ejemplo:
while (cap.isOpened()): #Cogemos un frame ret, frame = cap.read() cv2.imshow('webCam',frame) #Mostramos el frame if (cv2.waitKey(1) == ord('s')): si presionamos 's' salimos del programa break cap.release() #Soltamos la camara cv2.destroyAllWindows() #Cerramos ventana
Si queremos cambiar el tamaño de la imagen, podemos utilizar la función cv2.resize()
. Esta función toma como parámetros la imagen original y el tamaño deseado. Por ejemplo, si queremos cambiar el tamaño de la imagen a un ancho de 600 píxeles y un alto de 400 píxeles, podemos utilizar el siguiente código:
# Cambiar el tamaño de la imagen resized_frame = cv2.resize(frame, (600, 400))
Subscríbete a nuestro blog
Otra función importante es la de cv2.cvtColor()
que permite convertir una imagen de un espacio de color a otro. Por ejemplo, si queremos convertir una imagen a escala de grises, podemos utilizar el siguiente código:
# Convertir a escala de grises gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
La detección de bordes es otra técnica común en el procesamiento de imágenes. OpenCV proporciona varios algoritmos para la detección de bordes, como el algoritmo Canny. Este algoritmo toma como parámetros la imagen original y los valores umbral para la detección de bordes. Por ejemplo, si queremos detectar bordes en una imagen utilizando el algoritmo Canny con umbrales de 50 y 150, podemos utilizar el siguiente código:
# Detectar bordes con Canny edges = cv2.Canny(gray_frame, 50, 150)
Otra técnica importante es la detección de características, que permite encontrar puntos específicos en una imagen, como esquinas o puntos de interés. OpenCV proporciona varios algoritmos de detección de características, como el algoritmo de Harris y el algoritmo de Shi-Tomasi. Por ejemplo, si queremos detectar esquinas en una imagen utilizando el algoritmo de Harris, podemos utilizar el siguiente código:
# Detectar esquinas con Harris corners = cv2.cornerHarris(gray_frame, 2, 3, 0.04)
El código completo quedaría así:
import cv2 cap = cv2.VideoCapture(0) while (cap.isOpened()): ret, frame = cap.read() #capturar imagen edges = cv2.Canny(frame, 50, 150) # Detectar bordes con Canny corners = cv2.cornerHarris(frame, 2, 3, 0.04) # Detectar esquinas con Harris cv2.imshow('webCam',frame) #Mostramos imagen cv2.imshow('edge', edges) #Mostramos bordes if (cv2.waitKey(1) == ord('s')): #pulsamos s para salir break cap.release() cv2.destroyAllWindows()

En resumen, OpenCV proporciona una gran cantidad de funciones y herramientas para la captura y procesamiento de imágenes. Con estas funciones, podemos realizar tareas básicas como el cambio de tamaño y la rotación, así como técnicas avanzadas como el filtrado y la detección de bordes. A medida que continuemos explorando el potencial de OpenCV, veremos cómo utilizar estas funciones para desarrollar sistemas de visión artificial más complejos y avanzados.