Python OpenCV – función selectroi()

En este artículo vamos a ver una aplicación interesante de la librería OpenCV, que es selectROI(). Con este método, podemos seleccionar un rango de interés en una imagen manualmente seleccionando el área de la imagen.

Sintaxis: cv2.selectROI(Window_name, source image)

Parámetro:

  • window_name: nombre de la ventana donde se mostrará el proceso de selección.
  • imagen de origen: imagen para seleccionar un ROI.
  • showCrosshair: si se mostrará la verdadera cruz del rectángulo de selección.
  • fromCenter: si el verdadero origen de la selección coincidirá con la posición inicial del mouse

Con esta función en OpenCV, podemos seleccionar de forma precisa y manual el área de interés que necesitábamos de la imagen y, por lo tanto, podemos realizar muchas tareas para esa área específica. Podemos pasar esa área en particular como entrada para otra tarea. También podemos dibujar una figura de seguimiento (rectángulo) en el área usando las coordenadas o podemos recortar una imagen con precisión y libertad. En primer lugar, debemos importar las bibliotecas necesarias, que en nuestro caso son OpenCV y NumPy. La biblioteca NumPy juega un papel muy importante en este programa porque OpenCV usa NumPy como la columna vertebral para realizar todas las manipulaciones de imágenes.

Antes de realizar todo tipo de funciones en una imagen, es obvio leer primero la imagen. Y guárdelo en una variable para acceder a él en el futuro para futuras manipulaciones.

Sintaxis: 

cv2.imread (imagen de origen)

Ahora estamos entrando en la función real que es selectROI(). Entonces, básicamente, esta función nos permitirá seleccionar un rango de interés en una imagen (un área particular de una imagen) y realizar diferentes acciones en esa área, en este ejemplo particular, vamos a recortar la imagen para mostrar la imagen recortada .

Ahora vamos a llamar a la función selectRoi() y pasar la imagen como un parámetro y lo que la función devolverá es una array de diferentes valores que contenían las coordenadas del área seleccionada y lo almacenaremos en una variable llamada “R”. Que son básicamente los píxeles iniciales y finales del área seleccionada en una imagen y la array de salida en orden [Top_X, Top_Y, Bottom_X, Bottom_Y]

Que en OpenCV las coordenadas x e y se intercambian,

Nota: Esta función selectedROI() tiene su propia salida predeterminada que nos mostrará la imagen automáticamente y nos permitirá seleccionar manualmente el ROI en la imagen. También podemos nombrar esa ventana pasando el parámetro windowname en la función()

Controles de la función: Después de seleccionar el ROI, se nos pide que presionemos el botón de espacio o enter para continuar con el área seleccionada. Y C para cancelar la selección. Usando esas coordenadas, seleccionaremos el área seleccionada en particular, la recortaremos y mostraremos la salida. Para recortar la imagen con arrays NumPy,

Sintaxis: 

imagen_fuente[ fila_inicial : fila_final, columna_inicial : columna_final]

En el que debemos pasar el valor de los valores de píxel inicial y final de la imagen. Finalmente, vamos a mostrar la imagen recortada y destruir las ventanas.

Programa: Programa para seleccionar y recortar una imagen.

Python3

import cv2
import numpy as np
  
  
# Read image
image = cv2.imread("image.png")
  
# Select ROI
r = cv2.selectROI("select the area", image)
  
# Crop image
cropped_image = image[int(r[1]):int(r[1]+r[3]), 
                      int(r[0]):int(r[0]+r[2])]
  
# Display cropped image
cv2.imshow("Cropped image", cropped_image)
cv2.waitKey(0)

Producción:

Publicación traducida automáticamente

Artículo escrito por sanjaysdev0901 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *