Visualizar la Webcam en un Panel en Java

5
1358
GARD Pro Not Registered

Hoy traigo para ustedes un breve aporte sobre como visualizar un video tomado en tiempo real por nuestra webcam en un Panel dentro de una ventana en Java.

Utilizaremos un API que facilita mucho esta tarea: webcam-capture (ver en Github). Estoy trabajando en un proyecto donde necesito capturar imágenes de una webcam en tiempo real y este API me pareció simplemente maravillos. No es complicado en lo absoluto y la programación de una  interfaz con las imágenes capturadas por nuestra webcam es cuestión de solo unos minutos.

Veamos cómo lograrlo.

Creación de proyecto Maven

Maven es simplemente fabuloso. Recomiendo leer el siguiente artículo:

Vamos a Netbeans y creamos un proyecto Maven.

visualizar webcam en un panel

GARD Pro Not Registered

 

Lo llamaremos webcam_test.

En nuestro archivo pom.xml definimos las siguientes dependencias:

Hacemos clic derecho sobre nuestro proyecto y le damos clic en “Clean and Build”.

visualizar webcam en un panelCon esto se descargará automáticamente todos los archivos necesarios (dependencias) para lograr lo que queremos.

GARD Pro Not Registered

visualizar webcam en un panel

 

Ahora creamos 2 clases, una que llamaremos webcam_test que no hará más nada que iniciar nuestra ventana cuando se ejecute el programa. La otra ventana será un JFrame que llamaremos JFrameWindow.

visualizar webcam en un panel

 

El código de la clase webcam_test es el siguiente:

Esto hará que al darle “play” a nuestra aplicación, se abra la ventana que por ahora no contiene nada.

En nuestro JFrame agregamos un JPanel que llamaremos jPanelCamera. Tenemos que declarar algunas variables como globales:

A continuación el código que permitirá visualizar las imágenes de nuestra webcam (lo colocaremos en el constructor del JFrame):

Nuestro código debe lucir así:

visualizar webcam en un panel

GARD Pro Not Registered

 

Cuando ejecutamos el código, el resultado debe ser el siguiente:

visualizar webcam en un panel

 

GARD Pro Not Registered

Justo lo que queremos, fácil y rápido.  Ahora vamos a agregarle una pequeña función: capturar la imagen en un momento dado.

Agregamos un botón con la siguiente programación:

La interfaz luciría así:

visualizar webcam en un panel

 

Cuando se ejecuta:

visualizar webcam en un panelAl presionar el botón de “Capturar Imagen” verificamos la ruta en la cual se encuentra nuestro proyecto de Netbeans guardado y veremos lo siguiente:

visualizar webcam en un panelSi abrimos el fichero webcam_test.png veremos:

visualizar webcam en un panel

 

Los archivos de este proyecto se encuentran en nuestro repositorio de Github. Espero que la información suministrada sea de utilidad para ustedes.

Saludos.

 

 

 

  • Arnol Sosa

    Hola, excelente post, tengo una duda y problema quisiera poder escoger la camara que controlare es decir si utilizo la herramienta para tomar fotografias para almacenarlas en la ficha de personal por ejemplo

  • Merodeador De Gaticos

    Hola, qué tal. Revisé el código y funciona muy bien. Pero tengo una duda.

    Si quisiera mostrar la imagen capturada en otro JPanel y que éste cambiara conforme tomo una nueva foto (y se sustituyera la anterior) cómo tendría que hacerlo?

    He intentado utilizando el método de JPanel “updateImage”, agregando un Jlabel y asignando un ícono al JLabel (sí muestra la imagen, pero no la actualiza si tomo más fotos).

    • Antony García González

      No he probado a hacerlo. Pero trataré de documentarlo pronto