Cómo recortar una imagen usando OpenCV en Python
- Método 1: Recorte utilizando el slicing de arreglos NumPy
- Método 2: Recorte utilizando ROI (Región de Interés) de OpenCV
- Método 3: Recorte con Eventos del Ratón
- Conclusión
- Sección FAQ

El procesamiento de imágenes es una habilidad crucial para los desarrolladores, especialmente en campos como la visión por computadora, el aprendizaje automático y los medios digitales. Una de las tareas más comunes en el procesamiento de imágenes es recortar imágenes. El recorte ayuda a enfocar un área específica de una imagen, eliminando partes innecesarias y mejorando la calidad visual general. En este artículo, exploraremos cómo recortar imágenes utilizando OpenCV en Python. Cubriremos varios métodos, proporcionaremos ejemplos de código claros y bien comentados, y ofreceremos explicaciones detalladas para ayudarlo a comprender cada enfoque. Ya sea que sea un principiante o un programador experimentado, esta guía le equipará con las habilidades que necesita para manipular imágenes de manera efectiva.
Método 1: Recorte utilizando el slicing de arreglos NumPy
Una de las formas más simples de recortar una imagen en OpenCV es utilizando el slicing de arreglos NumPy. OpenCV lee imágenes como arreglos NumPy, lo que le permite manipular los valores de los píxeles directamente. Este método es directo y eficiente para recortar áreas rectangulares de una imagen.
Proceso Paso a Paso
- Importar Bibliotecas: Comience importando las bibliotecas requeridas, incluyendo OpenCV y NumPy.
- Cargar la Imagen: Utilice
cv2.imread()
para cargar la imagen que desea recortar. - Definir Coordenadas de Recorte: Especifique las coordenadas para las esquinas superior izquierda e inferior derecha del área de recorte.
- Recortar la Imagen: Utilice el slicing de arreglos para extraer la región deseada.
- Mostrar la Imagen Recortada: Utilice
cv2.imshow()
para visualizar el resultado recortado.
Ejemplo de Código
import cv2
import numpy as np
# Load the image
image = cv2.imread('path/to/your/image.jpg')
# Define the coordinates for cropping (y_start:y_end, x_start:x_end)
cropped_image = image[50:200, 100:300]
# Display the cropped image
cv2.imshow('Cropped Image', cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
En este método, cargamos la imagen utilizando la función imread()
de OpenCV. La imagen se representa como un arreglo NumPy, donde cada píxel se puede acceder utilizando sus coordenadas. Al especificar el rango de filas y columnas, podemos cortar el arreglo para obtener la imagen recortada. La función imshow()
muestra la imagen recortada en una ventana, lo que le permite ver el resultado de inmediato. Este método es eficiente y proporciona un control preciso sobre el proceso de recorte.
Método 2: Recorte utilizando ROI (Región de Interés) de OpenCV
Otro método efectivo para recortar imágenes en OpenCV es utilizando la técnica de Región de Interés (ROI). Este método es particularmente útil cuando desea recortar un área específica basada en entradas dinámicas o condiciones.
Proceso Paso a Paso
- Importar Bibliotecas: Comience importando OpenCV.
- Cargar la Imagen: Utilice
cv2.imread()
para cargar su imagen. - Definir la ROI: Especifique las coordenadas de la región que desea recortar.
- Recortar la Imagen: Utilice la ROI para extraer el área deseada.
- Mostrar la Imagen Recortada: Utilice
cv2.imshow()
para ver el resultado.
Ejemplo de Código
import cv2
# Load the image
image = cv2.imread('path/to/your/image.jpg')
# Define the Region of Interest (ROI)
x, y, w, h = 100, 50, 200, 150 # x, y, width, height
roi = image[y:y+h, x:x+w]
# Display the cropped image
cv2.imshow('Cropped ROI', roi)
cv2.waitKey(0)
cv2.destroyAllWindows()
En este método, definimos una Región de Interés (ROI) especificando las coordenadas de la esquina superior izquierda (x, y) junto con el ancho (w) y la altura (h) del área deseada. La sintaxis image[y:y+h, x:x+w]
nos permite cortar el arreglo de la imagen en consecuencia. Este método es particularmente útil para aplicaciones donde el área de recorte puede cambiar según la entrada del usuario o la lógica del programa. Al utilizar ROIs, puede ajustar dinámicamente qué parte de la imagen enfocar.
Método 3: Recorte con Eventos del Ratón
Para un enfoque más interactivo, puede recortar imágenes utilizando eventos del ratón en OpenCV. Este método permite a los usuarios seleccionar visualmente el área de recorte, lo que lo hace ideal para aplicaciones donde la precisión es esencial.
Proceso Paso a Paso
- Importar Bibliotecas: Importe OpenCV y NumPy.
- Cargar la Imagen: Utilice
cv2.imread()
para cargar la imagen. - Definir Callback del Ratón: Cree una función para manejar eventos del ratón y seleccionar el área de recorte.
- Mostrar la Imagen: Utilice
cv2.imshow()
para mostrar la imagen. - Recortar el Área Seleccionada: Extraiga el área basada en la selección del usuario.
Ejemplo de Código
import cv2
# Global variables to store the cropping coordinates
start_point = None
end_point = None
# Mouse callback function to capture the cropping area
def select_area(event, x, y, flags, param):
global start_point, end_point
if event == cv2.EVENT_LBUTTONDOWN:
start_point = (x, y)
elif event == cv2.EVENT_LBUTTONUP:
end_point = (x, y)
cv2.rectangle(image, start_point, end_point, (0, 255, 0), 2)
cv2.imshow('Image', image)
# Load the image
image = cv2.imread('path/to/your/image.jpg')
cv2.namedWindow('Image')
cv2.setMouseCallback('Image', select_area)
# Display the image
cv2.imshow('Image', image)
cv2.waitKey(0)
# Crop the image based on selected points
if start_point and end_point:
cropped_image = image[start_point[1]:end_point[1], start_point[0]:end_point[0]]
cv2.imshow('Cropped Image', cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
En este método interactivo, definimos una función de callback del ratón que captura los puntos de inicio y final del rectángulo de recorte. El usuario puede hacer clic y arrastrar para seleccionar el área visualmente. Cuando se suelta el botón del ratón, el área seleccionada se destaca con un rectángulo y se realiza la operación de recorte basada en las coordenadas definidas. Este método mejora la experiencia del usuario y proporciona una manera práctica de recortar imágenes con precisión.
Conclusión
Recortar imágenes es una tarea fundamental en el procesamiento de imágenes, y OpenCV en Python ofrece varios métodos para lograrlo. Desde el simple slicing de NumPy hasta los eventos interactivos del ratón, cada método tiene sus ventajas y casos de uso. Comprender estas técnicas le permitirá manipular imágenes de manera efectiva, ya sea para proyectos personales o aplicaciones profesionales. Con el conocimiento adquirido de esta guía, puede recortar imágenes con confianza y explorar funciones adicionales en OpenCV.
Sección FAQ
- ¿Qué es OpenCV?
OpenCV (Open Source Computer Vision Library) es una poderosa biblioteca utilizada para tareas de visión por computadora y procesamiento de imágenes. Proporciona diversas funcionalidades para manipulación de imágenes, análisis y aprendizaje automático. - ¿Cómo instalo OpenCV en Python?
Puede instalar OpenCV utilizando pip ejecutando el comando:pip install opencv-python
- ¿Puedo recortar imágenes en formatos diferentes a JPEG?
Sí, OpenCV admite varios formatos de imagen, incluidos PNG, BMP y TIFF. Puede utilizar los mismos métodos para recortar imágenes sin importar su formato. - ¿Cómo puedo guardar la imagen recortada?
Puede guardar la imagen recortada utilizando la funcióncv2.imwrite()
. Por ejemplo:cv2.imwrite('path/to/save/cropped_image.jpg', cropped_image)
- ¿Hay alguna forma de cambiar el tamaño de la imagen recortada?
Sí, puede cambiar el tamaño de la imagen recortada utilizando la funcióncv2.resize()
. Por ejemplo:resized_image = cv2.resize(cropped_image, (width, height))
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn