Interfaz gráfico

Interfaz gráfico

OpenCV incluye un interfaz gráfico muy ligero llamado highgui. Este interfaz está desde la versión alfa de OpenCV, y su principal ventaja es que es muy ligero, rápido y multiplataforma. Por contra, se trata de un intefaz tremendamente limitado, pues únicamente permite mostrar una imagen, capturar eventos de teclado y ratón, y mostrar una barra de desplazamiento como interfaz para el usuario.

 

Para pruebas y versiones temporales, este interfaz es más que suficiente, sin embargo, para aplicaciones reales este interfaz no es práctico en absoluto. Es por esto que en las últimas versiones de OpenCV se ha incluido también como alternativa de interfaz gráfico la librería Qt. Esta librería es tambien multiplataforma y, sobre todo, es mucho más potente que highgui, permitiendo generar ventanas como las que todos los usuarios están acostumbrados a usar en las aplicaciones gráficas. La única desventaja de Qt, es que es más compleja que highgui, por lo que solo se comentará highgui ya que es más que suficiente para los objetivos del curso.

Así pues, para mostrar una imagen con OpenCV usando highgui, hay que seguir los siguientes pasos:

cv::namedWindow("Titulo ventana", CV_WINDOW_AUTOSIZE);
cv::imshow("Titulo ventana", imagenParaMostrar);
cv::waitKey(-1);

Concretamente, lo que se está haciendo aquí es:

  • Crear ventana y asignarle identificador (título). Primero hay que crear una ventana mediante namedWindow. A namedWindow hay que darle como parámetro el título de la ventana que se va a crear y el ajuste de ventana. Se recomienda usar CV_WINDOW_AUTOSIZE para que la ventana se ajuste automáticamente al tamaño de la imagen a mostrar. Hay que tener en cuenta que el título que se de a esta ventana es lo que se usará como identificador para referirse a ella.
  • Mostrar la imagen en la ventana creada. Mediante imshow se muestra una imagen ya creada en la ventana que se acaba de crear. Como se puede ver, hay que pasar como parámetros el título de la ventana creada y la imagen a mostrar.
  • Actualizar el interfaz gráfico. La librería highgui necesita llamar a la función waitkey para actualizar el interfaz gráfico. Como parámetro necesita el tiempo (en milisegundos) que tendrá que esperar a que el usuario pulse una tecla antes de continuar. Si se pone 1000, la función se quedará esperando (bloqueada) durante 1000 milisegundos (1 segundo) a que el usuario pulse una tecla. Si no la pulsa, la función devuelve 0. De lo contrario, devolverá la tecla pulsada por el usuario. Si se pone -1, la función esperará indefinidamente a que el usuario pulse alguna tecla.

 

Obra publicada con Licencia Creative Commons Reconocimiento 2.5