Python OpenCV – Función setWindowProperty()

En esto, cubrimos brevemente la función setWindowProperty() con su ejemplo de trabajo del paquete OpenCV en el lenguaje de programación python.

¿Quieres cambiar los parámetros de una ventana de forma dinámica? Luego, debe consultar la función setWindowProperty() que permite cambiar las propiedades de una ventana. En este artículo, discutiremos cómo usar setWindowProperty() en OpenCV. 

Sintaxis:

cv2.namedWindow(windowsName, prop_value)

cv2.setWindowProperty(nombreVentanas, prop_id, prop_value)

Parámetros:

  • windowsName: Nombre de la ventana
  • prop_id: propiedad de ventana para editar como cv2.WINDOW_NORMAL, cv2.WINDOW_KEEPRATIO, cv2.WINDOW_FULLSCREEN, etc.
  • prop_value: Nuevo valor de la propiedad de la ventana como cv2.WND_PROP_FULLSCREEN, cv2.WND_PROP_AUTOSIZE, cv2.WND_PROP_ASPECT_RATIO, etc.

Implementación paso a paso:

Paso 1: en primer lugar, importa las bibliotecas OpenCV y NumPy:

En este paso, simplemente estamos importando las bibliotecas requeridas al entorno de trabajo de python para usar sus funcionalidades según sea necesario.

Aquí, estamos importando cv2 y la biblioteca Numpy, cv2 es el paquete OpenCV que nos ayuda a llamar a la función setWindowPropoerty() dentro del entorno y, además, el paquete Numpy es responsable de las operaciones matemáticas aleatorias.

Sintaxis:

import cv2
import numpy

Paso 2: Ahora, crea una función nada para crear la barra de seguimiento:

En este paso, crearemos una función llamada «nada» que se puede usar como una función de devolución de llamada para la barra de seguimiento.

A continuación, hemos creado una barra de seguimiento usando la función createTrackbar() para la cual necesitamos pasar alguna función definida por el usuario según la función createTrackbar(), por lo que hemos creado una función de nada.

def nothing(x):
   pass

Paso 3: Luego, crea una ventana con una imagen en negro.

En este paso, devolvemos una nueva array de color negro del tamaño especificado. Aquí, se usa la función numpy.zeros() que devuelve una nueva array de forma y tipo determinados.

  • forma: número entero o secuencia de números enteros
  • dtype: tipo de datos de la array devuelta
img = numpy.zeros((300, 512, 3), numpy.uint8)

Paso 4: A continuación, asigne el nombre a su aplicación GUI.

En este paso, hemos usado una función namedWindow() que se usa para crear una ventana con un nombre y tamaño adecuados para mostrar imágenes y videos en la pantalla.

  • window_name: Nombre de la ventana.
  • prop_value: Nuevo valor de la propiedad de la ventana como cv2.WND_PROP_FULLSCREEN, cv2.WND_PROP_AUTOSIZE, cv2.WND_PROP_ASPECT_RATIO, etc.
cv2.namedWindow(windowsName, prop_value)

Paso 5: establezca las propiedades de la aplicación GUI.

En este paso, usaremos la función setWindowProperty() que cambia los parámetros de la ventana dinámicamente.

  • windowsName: Nombre de la ventana.
  • prop_id: propiedad de ventana para editar como cv2.WINDOW_NORMAL, cv2.WINDOW_KEEPRATIO, cv2.WINDOW_FULLSCREEN, etc.
  • prop_value: Nuevo valor de la propiedad de la ventana como cv2.WND_PROP_FULLSCREEN, cv2.WND_PROP_AUTOSIZE, cv2.WND_PROP_ASPECT_RATIO, etc.

cv2.setWindowProperty(nombreVentanas, prop_id, prop_value)

Paso 6: Además, crea una barra de seguimiento para cambiar el color.

En este paso, hemos usado una función createTrackbar() que se usa para crear la barra de seguimiento en OpenCV.

cv2.createTrackbar(‘color_track’, ‘imagen’, 0, 255, nada)

Paso 7: Además, establezca el valor máximo de la barra de seguimiento.

En este paso, hemos utilizado la función setTrackbarPos() que establece la posición de la barra de seguimiento creada en la ventana especificada. Esta función no devuelve nada.

cv2.setTrackbarMax(‘color_track’, ‘imagen’, #Valor-Máximo)

Paso 8: Más tarde, cree un bucle para mostrar la imagen y la barra de seguimiento.

En este paso, creamos un bucle while que se ejecuta continuamente hasta que el usuario presiona el botón Escafe.

while(True):

Paso 8.1: A continuación, muestra la imagen.

En este paso, mostraremos la imagen negra que creó anteriormente en el paso 3.

  cv2.imshow('image', img)

Paso 8.2: Luego, cree un botón para presionar y cambiar la ventana.

En este paso, usamos la tecla de espera para agregar retraso y detener la función cuando el usuario presiona la tecla ‘Escafé’.

  k = cv2.waitKey(1) & 0xFF
  if k == 27:
    break

Paso 8.3: Además, obtenga las posiciones actuales de la barra de seguimiento.

En este paso, hemos utilizado una función getTrackbarPos() que devuelve la posición actual de la barra de seguimiento especificada. Esta función toma dos argumentos para los cuales el primero es el nombre de la barra de seguimiento y el segundo es el nombre de la ventana que es el padre de la barra de seguimiento.

  color = cv2.getTrackbarPos('color_track', 'image')

Paso 8.4: Ahora, muestre la mezcla de colores.

En este paso, cambiaremos el color de la imagen negra según la barra de seguimiento. El color de la imagen cambia de negro a blanco.

  img[:] = [color]

Paso 9: Finalmente, cierra y destruye todas las ventanas.

En este paso, finalmente cerraremos todas las ventanas que hemos abierto hasta ahora. No toma ningún parámetro y no devuelve nada.

cv2.destroyAllWindows()

Ejemplo:

Python3

# Python program for setWindowProperty()
#Python OpenCV
  
# Importing the libraries OpenCV and numpy
import cv2
import numpy
  
# Create a function 'nothing' for creating trackbar
def nothing(x):
    pass
  
# Creating a window with black image
img = numpy.zeros((300, 512, 3), numpy.uint8)
  
#Name the GUI app
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
  
#Set the properties of GUI app
cv2.setWindowProperty('image', cv2.WND_PROP_ASPECT_RATIO,
                      cv2.WINDOW_FULLSCREEN)
  
# Creating trackbars for color change
cv2.createTrackbar('color_track', 'image', 0, 255, nothing)
  
# Create a loop for displaying image and trackbar
while(True):
  
    # Display the image
    cv2.imshow('image', img)
  
    # Create a button for pressing and changing
    # the window
    k = cv2.waitKey(1) & 0xFF
    if k == 27:
        break
  
    # Get current positions of trackbar
    color = cv2.getTrackbarPos('color_track', 'image')
  
    # Display color mixture
    img[:] = [color]
  
# Close the window
cv2.destroyAllWindows()

Producción:

 

Publicación traducida automáticamente

Artículo escrito por vin8rai 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 *