2011-04-07 16 views
8

Actualmente estoy haciendo un proyecto de OpenCV en C++ donde busco el movimiento con un kinect y lo uso para mostrar una presentación de diapositivas (sin reconocimiento). Actualmente, estoy mostrando la presentación de diapositivas usando OpenCV (ya que solo he tenido una semana para actualizar esto). Se ve bien y es rápido. El único problema es que esto estará en exhibición para una gran producción y realmente no puedo permitir que se muestre la ventana (estoy hablando de decoraciones de ventana como la barra de título y tal).Tomar la ventana de OpenCV y hacer pantalla completa

Necesito deshacerme de la barra de títulos. Investigué mucho y descubrí que puedes agarrar mágicamente el asa de la ventana llamando a cvGetWindowHandle ("SlideShow"), pero esa es una función nula, así que no sé cómo se supone que debo hacerlo. obtener un control de eso para manipular.

Estoy desarrollando esto para ambas ventanas Y ubuntu, ya que terminará en una máquina de Windows, pero solo puedo hacer una demostración en una computadora portátil con Ubuntu.

Si alguien puede decirme cómo tomar la ventana y renderizarla a pantalla completa con una imagen redimensionada para llenar la mayor parte, si no toda la pantalla, ya sea en Windows o Ubuntu, estaré siempre agradecido.

+0

cvGetWindowHandle no se 'void' - es' void * 'Por lo que puede lanzarlo a HWND – tom502

Respuesta

18

estoy usando OpenCV 2.1 en Ubuntu 11.04. En mi sistema, los indicadores CV_WINDOW_FULLSCREEN y CV_WINDOW_AUTOSIZE se asignan a 1 Y ambas banderas se comportan exactamente igual. Le dan una ventana de tamaño fijo, lo que se esperaría para la bandera AUTOSIZE pero no para la FULLSCREEN. Creo que estas dos banderas están diseñadas para diferentes funciones aunque su apariencia similar es muy confusa. La bandera CV_WINDOW_NORMAL se asigna al valor 0 que es lo que ha utilizado. Le da una ventana de tamaño variable que puede maximizar, pero no es una ventana de pantalla completa.

Editar: Acabo de encontrar la solución en another stachoverflow post. Aquí está la solución de ese cargo, que funcionó muy bien en mi sistema:

cvNamedWindow("Name", CV_WINDOW_NORMAL); 
    cvSetWindowProperty("Name", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN); 
    cvShowImage("Name", your_image); 

consigo una pantalla completa real sin título bar, etc.

+0

Actualización para 2017 cv :: setWindowProperty reemplaza a cvSetWindowProperty –

2

puede usar la función cv :: setWindowProperty para su propósito, simplemente configúrelo en CV_WINDOW_FULLSCREEN.

la documentación completa en el openCV-WIKI

+0

Lo he intentado. No hace diferencia visible. – Tubbstosterone

+3

¡Lo descubrí! ¡la bandera de cvNamedWindow debe establecerse en cero para que funcione! – Tubbstosterone

+1

alias 'CV_WINDOW_NORMAL' en' cvNamedWindow ("Nombre", CV_WINDOW_NORMAL); ' –

Cuestiones relacionadas