Читать книгу Visión artificial - Tomás Domínguez Mínguez - Страница 16
4.1 VENTANAS
ОглавлениеHasta ahora, las ventanas en las que ha mostrado las imágenes se han creado automáticamente con la función imshow(). Sin embargo, OpenCV permite más posibilidades de creación y configuración. Veamos cuáles son las principales.
Para crear una ventana, OpenCV proporciona la función:
namedWindow(ventana)
El argumento de esta función es el nombre de la ventana, que es el que aparece en su barra de título. Además, dicho nombre será el utilizado en la lógica del programa para identificarla y, de esta forma, poder asociarla a imágenes, eventos de teclado o ratón, barras de desplazamiento, etc.
Opcionalmente, tiene un segundo argumento que puede tomar los siguientes valores:
• WINDOW_NORMAL. Permite cambiar el tamaño de la ventana sin restricciones.
• WINDOW_AUTOSIZE. El tamaño de la ventana se ajusta automáticamente al de la imagen mostrada, no puede ser modificada de forma manual.
• WINDOW_OPENGL. La ventana se creará con soporte OpenGL.
OpenGL (Open Graphics Library) es un estándar que define una API multilenguaje y multiplataforma para el desarrollo de gráficos 2D y 3D.
Si lo que desea es mover una ventana a una posición concreta del escritorio, use la función:
moveWindow(nombre ventana, x, y )
El primer argumento es el nombre de la ventana que se va a desplazar a las coordenadas x, y fijadas en los otros dos argumentos.
Para redimensionar una ventana, utilice la función:
resizeWindow(ventana, ancho, alto )
En este caso, la ventana indicada en el primer argumento adquiere las dimensiones establecidas en los otros dos argumentos.
Para cerrar una ventana, llame a la función:
destroyWindow(ventana)
Si lo que quiere es cerrar todas las ventanas que se hayan podido abrir en el programa, use esta otra función:
destroyAllWindows()
El siguiente programa muestra la imagen del cuadro de la niña, pero con una serie de particularidades.
Lo primero que se hace en el programa después de importar la librería OpenCV es cargar la imagen con el cuadro de la niña.
img = cv2.imread(‘../imagenes/cuadro.jpg’, 1)
Luego se crea una ventana (llamada “Cuadro”) utilizando la función namedWindow() con el flag WINDOW_NORMAL, por lo que, a diferencia de cuando se creaba con la función imshow(), ahora podrá redimensionarla sin restricciones. Además, al cerrar la ventana, si ejecutara de nuevo el programa, aparecería con las mismas dimensiones que tenía cuando la cerró.
cv2.namedWindow(‘Cuadro’, cv2.WINDOW_NORMAL)
Una vez creada la ventana, se mostrará en la parte superior izquierda del escritorio.
cv2.moveWindow(‘Cuadro’, 0, 0)
Por último, se muestra la imagen en dicha ventana.
cv2.imshow(‘Cuadro’, img)
Ejecute el programa y compruebe que su funcionamiento es el descrito.