Visualizar la Webcam en un Panel en Java

11
13613

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

 

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.

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

 

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

visualizar webcam en un panel

 

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.

 

 

 

0 0 votes
Article Rating
Suscríbete
Notify of
guest

11 Comments
newest
oldest most voted
Inline Feedbacks
View all comments
Fernando
Fernando
2 years ago

Hola. ¿Sabes en qué cambiaría si usásemos Eclipse en vez de Maven?
Un saludo y gracias.

Angel
Angel
3 years ago

Hola buenas ha sido de gran utilidad esta explicación. Sin embargo me gustaría saber si puedo establecer la ruta en la que guardo la imagen? espero puedas leerme gracias

Eduardo Londoño
Eduardo Londoño
6 years ago

Hola, una pregunta.
Cuando ejecuto el código me aparece este error:

Failed to execute goal on project webcam_test: Could not resolve dependencies for project com.mycompany:webcam_test:jar:1.0-SNAPSHOT: Could not find artifact com.github.sarxos:webcam-capture:jar:0.3.11-SNAPSHOT -> [Help 1]

To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.

For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

De casualidad sabes que está pasando?

Robinson
Robinson
3 years ago

Hola Eduardo, pudiste resolverlo? Me encuentro con el mismo inconveniente.

Angel
Angel
3 years ago
Reply to  Robinson

No sé si pudiste solucionarlo pero se corrige yendo al POM.xml y borrarle el «SNAPSHOT» a la version de la dependencia

Arnol Sosa
Arnol Sosa
7 years ago

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

Antony García González
Antony García González
7 years ago
Reply to  Arnol Sosa

Explicate un poco mejor

Arnol Sosa
Arnol Sosa
7 years ago

Hola, pues veras tu codigo muestra acceso a las camaras conectadas a mi equipo para seleccionar la correcta para tomar la fotografia, en tu caso usaste la camara por defecto que generalmente en las laptos ubicada en la parte frontal, yo necesito abrir una 2da o 3ra camara

te anexo captura.
https://uploads.disquscdn.com/images/eb5d05473fda2d39373c70aa73532e2a81b7ed19462c8b71df62a8e7ac1340b1.jpg

Merodeador De Gaticos
Merodeador De Gaticos
8 years ago

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).