Esta biblioteca le permite utilizar su cámara web incorporada o externa directamente desde Java. Está diseñado para abstraer las funciones de la cámara de uso común y admitir varios marcos de captura.
Supongamos una situación en la que su código depende de algún marco de captura, pero de repente tiene que eliminarlo y usar uno diferente, tal vez más nuevo (por ejemplo, reemplazar el JMF arcaico con el GStreamer más nuevo). Al hacer esto, tendrá que reescribir una parte importante de su código porque estos marcos son completamente diferentes y no son compatibles en absoluto. Aquí es donde Webcam Capture API viene a salvar el mundo: fue creada para eliminar la carga de tales situaciones para que no tengas que reescribir tu código nunca más, sino que simplemente puedes cambiar la clase de controlador a otra diferente.
La última versión estable es: 0.3.12
La última versión de desarrollo es: 0.3.13-SNAPSHOT
(y otros dispositivos ARM)
La última versión (0.3.10) no funciona en ARM recién instalada. Para que funcione, debe reemplazar la versión 0.6.2 de BridJ JAR por la 0.6.3-SNAPSHOT o la versión más reciente bridj-0.7-20140918. Además, últimamente Jonathon Hare del equipo OpenIMAJ encontró un problema descrito en bridj #525 que causa problemas en la arquitectura armhf.
La última versión estable está disponible en Maven Central:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture</ artifactId >
< version >0.3.12</ version >
</ dependency >
Versión instantánea:
< repository >
< id >Sonatype OSS Snapshot Repository</ id >
< url >http://oss.sonatype.org/content/repositories/snapshots</ url >
</ repository >
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture</ artifactId >
< version >0.3.13-SNAPSHOT</ version >
</ dependency >
La versión estable más reciente se puede descargar como binario ZIP separado. Este archivo ZIP contiene la API de captura de cámara web y todas las dependencias requeridas (en el directorio libs
). Haga clic en el siguiente enlace para descargarlo:
captura-de-cámara web-0.3.12-dist.zip
La última versión de desarrollo JAR (también conocida como SNAPSHOT) se puede descargar aquí.
Si tiene una gran voluntad, tiempo libre, conocimientos o incluso una pequeña cantidad de dinero que le gustaría gastar con un buen propósito, puede ayudar a desarrollar esta increíble API de captura de cámara web y mejorarla aún más. Son bienvenidos varios tipos de contribuciones:
Si crees que este proyecto es genial, te gustaría ayudar, pero no sabes cómo: puedes convertirte en un observador de estrellas del proyecto. Al protagonizar estás haciendo que el proyecto sea más popular. Visite este enlace si desea obtener más información sobre cómo funcionan las notificaciones y las estrellas en Github.
Si encontró un error o se le ocurrió alguna característica fantástica que puede hacer que Webcam Capture sea una mejor API para usar, no dude en crear un nuevo número donde pueda describir en detalle cuál es el problema o qué ¿Te gustaría mejorar?
Dado que Webcam Capture utiliza parte del código nativo, es muy difícil cubrir todos los sistemas operativos compatibles. Siempre lo estoy probando en Ubuntu Linux de 64 bits, Windows XP y Vista (ambos de 32 bits), pero no tengo posibilidad de probarlo en Raspberry Pi, Mac OS y Linux de 32 bits. Por favor ayude y pruebe esos sistemas si tiene esa posibilidad.
Si conoce Java o C++, puede ayudar a desarrollar Webcam Capture bifurcando el repositorio y enviando solicitudes de extracción. Visite este enlace si no sabe cómo contribuir al código de otros en Github.
La gente ha expresado su deseo de donar un poco de dinero. Donar no les brindará nada especial, aparte de un sentimiento cálido en su interior, y posiblemente me impulsará a producir más material disponible gratuitamente para el proyecto Webcam Capture. Puede donar a través de PayPal, simplemente haga clic en el botón donar disponible a continuación; lo redirigirá a la página segura de PayPal donde puede proporcionar el monto de la donación (no hay un valor mínimo).
El siguiente código capturará la imagen de su cámara web predeterminada y la guardará en el archivo hello-world.png
:
Webcam webcam = Webcam . getDefault ();
webcam . open ();
ImageIO . write ( webcam . getImage (), "PNG" , new File ( "hello-world.png" ));
A continuación se muestran ejemplos muy básicos que demuestran cómo se puede utilizar Webcam Capture API en el código Java. Todo se puede encontrar en el código fuente del proyecto. Tenga en cuenta que algunos de esos ejemplos pueden utilizar la API más nueva que aún no se ha lanzado en maven Central. En tal caso, asegúrese de estar utilizando la última instantánea de API de captura de cámara web.
WebcamPanel
WebcamPanel
WebcamImageTransformer
Y aquí hay algunos ejemplos más avanzados, algunos con una GUI bastante sofisticada.
WebcamMotionDetector
con la ventana JFrame
WebcamPanel.Painter
para dibujar efectos en el componente WebcamPanel
WebcamImageTransformer
para dibujar efectos directamente en la imagen desde la cámaraSerie de vídeos de Genuine Coder para principiantes en Webcam Capture:
Webcam Capture API define la interfaz WebcamDriver
que ya se ha implementado en varios controladores de captura creados sobre marcos conocidos utilizados para trabajar con multimedia y cámaras. La lista completa se puede encontrar a continuación.
De forma predeterminada (si no se especifica otro controlador), la biblioteca utiliza un controlador predeterminado que consta de una parte pequeña y refinada del impresionante marco OpenIMAJ envuelto en un contenedor seguro para subprocesos. Sin embargo, hay más controladores listos para usar que pueden usarse como reemplazo o complemento del predeterminado. Al utilizar esos controladores, Webcam Capture se puede ampliar con varias funciones nuevas (por ejemplo, compatibilidad con cámaras IP).
La lista de controladores de captura adicionales incluye:
Nombre del conductor | Estable | Central | Descripción |
---|---|---|---|
cámara ip | Sí | Sí | Controlador para cámara IP/de red |
fswebcam | Sí | Sí | Controlador para la herramienta CLI FSWebcam |
streamer | Sí | Sí | Controlador para el marco GStreamer |
openimaj | Sí | Sí | Controlador para el marco OpenIMAJ |
v4l4j | Sí | No | Controlador para la biblioteca V4L4j |
jmf | Sí | Sí | Controlador para marcos JMF/FMJ |
lti-civil | Sí | Sí | Controlador para la biblioteca LTI-CIVIL |
vlcj | Sí | Sí | Controlador para la biblioteca vlcj |
javacv | Sí | Sí | Controlador para la biblioteca JavaCV |
ffmpeg-cli | poc | No | Controlador para la herramienta CLI FFmpeg |
raspicam | poc | No | Controlador para la herramienta Raspicam CLI PIcam |
Si no se especifica ningún otro controlador, se utilizará el controlador predeterminado. Consiste en una parte pequeña y refinada del impresionante marco OpenIMAJ envuelto en un contenedor seguro para subprocesos.
Este controlador de captura brinda la posibilidad de acceder a dispositivos de cámara IP y manejar imágenes en forma de imágenes JPEG o secuencias MJPEG.
Dependencia de Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ipcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cómo utilizar:
Webcam . setDriver ( new IpCamDriver ());
Se pueden encontrar más detalles y descargas de archivos binarios en la página dedicada a webcam-capture-driver-ipcam.
Este controlador de captura brinda la posibilidad de utilizar la herramienta CLI llamada fswebcam
(escrita por Philip Heron) para acceder a los dispositivos UVC conectados a la computadora. Funciona sólo en *nix y requiere que la herramienta esté instalada en el entorno donde se utiliza el controlador.
Dependencia de Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-fswebcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cómo utilizar:
Webcam . setDriver ( new FsWebcamDriver ());
Se pueden encontrar más detalles sobre cómo usar, cómo instalar fswebcam
y dónde se pueden descargar los archivos binarios en la página dedicada a webcam-capture-driver-fswebcam.
Este controlador de captura brinda la posibilidad de utilizar GStreamer para acceder a dispositivos de cámara UVC conectados a la computadora. Funciona únicamente en Windows y Linux.
Dependencia de Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-gstreamer</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cómo utilizar:
Webcam . setDriver ( new GStreamerDriver ());
Se pueden encontrar más detalles sobre cómo usarlo, cómo instalar GStreamer y dónde se pueden descargar los archivos binarios en la página dedicada a webcam-capture-driver-gstreamer.
Este controlador de captura brinda la posibilidad de usar OpenIMAJ para acceder a los dispositivos de cámara UVC conectados a la computadora.
Dependencia de Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-openimaj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cómo utilizar:
Webcam . setDriver ( new OpenImajDriver ());
Se pueden encontrar más detalles sobre cómo usarlo y dónde se pueden descargar los archivos binarios en la página dedicada a webcam-capture-driver-openimaj.
Este es un controlador de captura que utiliza el proyecto V4L4j para acceder a los dispositivos de cámara UVC. Sólo funciona en Linux y parece que es más adecuado para su uso en Raspberry Pi.
Dependencia de Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-v4l4j</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cómo utilizar:
Webcam . setDriver ( new V4l4jDriver ());
Se pueden encontrar más detalles sobre cómo usarlo y dónde se pueden descargar los binarios necesarios en la página dedicada a webcam-capture-driver-v4l4j.
Este es un controlador de captura que utiliza JMF (Java Media Framework) para acceder a dispositivos de cámara web UVC. Es necesario instalar y configurar JMF en la PC antes de poder utilizar este controlador. También se puede utilizar alternativamente con el proyecto FMJ.
Dependencia de Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-jmf</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cómo utilizar:
Webcam . setDriver ( new JmfDriver ());
Se pueden encontrar más detalles sobre cómo usarlo, instalarlo y dónde descargar los archivos binarios necesarios en la página dedicada webcam-capture-driver-jmf.
Este es un controlador de captura diseñado para aprovechar las capacidades del proyecto LTI-CIVIL (de Larson Technologies Inc.) y utilizarlo para acceder a una amplia gama de dispositivos UVC. Funciona únicamente en arquitecturas de 32 bits.
Dependencia de Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-lti-civil</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cómo usarlo:
Webcam . setDriver ( new LtiCivilDriver ());
Se pueden encontrar más detalles sobre cómo usarlo y dónde se pueden descargar los archivos binarios necesarios en la página dedicada a webcam-capture-driver-lti-civil.
Este es un controlador de captura que utiliza la biblioteca VLCj de Caprica Software Limited para obtener acceso al dispositivo de la cámara UVC.
Dependencia de Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-vlcj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cómo usarlo:
Webcam . setDriver ( new VlcjDriver ());
Se pueden encontrar más detalles sobre cómo usarlo, cómo instalarlo y dónde se pueden descargar los archivos binarios necesarios en la página dedicada a webcam-capture-driver-vlcj.
Este es un controlador de captura que utiliza el enlace JavaCV para OpenCV para obtener acceso al dispositivo de la cámara UVC.
Dependencia de Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-opencv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
o si está utilizando captura de cámara web <0.3.12:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-javacv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Si solo se dirige a plataformas específicas, consulte Reducción del número de dependencias.
Cómo usarlo:
Webcam . setDriver ( new JavaCvDriver ());
Se pueden encontrar más detalles sobre cómo usarlo, cómo instalarlo y dónde se pueden descargar los archivos binarios necesarios en la página dedicada a webcam-capture-driver-javacv.
Este es un controlador de captura que utiliza la herramienta CLI ffmpeg
de FFmpeg para acceder al dispositivo de cámara UVC.
Dependencia de Maven:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ffmpeg-cli</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Cómo usarlo:
Webcam . setDriver ( new FFmpegCliDriver ());
Se pueden encontrar más detalles sobre cómo usarlo, cómo instalarlo y dónde se pueden descargar los archivos binarios necesarios en la página dedicada webcam-capture-driver-ffmpeg-cli.
Inicialmente comencé a trabajar en Webcam Capture como una simple prueba de concepto después de leer el fantástico libro de Andrew Davison titulado Killer Game Programming (que también está disponible en línea). ¡Gracias Andrés! Más tarde descubrí que hay un completo desastre en las API de Java que le permiten capturar imágenes desde cámaras web. Una vez que elija una API específica, no podrá cambiarla sin modificar grandes partes del código. Decidí cambiar esta situación y escribir un contenedor de propósito general para varias API diferentes (como JMF, OpenCV, OpenIMAJ, LTI-CIVIL, VLC). De esta manera, Webcam Capture tal como la conocemos hoy cobró vida. Hoy en día puede cambiar los marcos subyacentes simplemente reemplazando el controlador de la cámara web (cambio de código de una línea). Si no existe un controlador para un marco en particular, es muy fácil escribirlo usted mismo.
Copyright (C) 2012 - 2017 Bartosz Firyn (https://github.com/sarxos) y colaboradores
Por el presente se otorga permiso, sin cargo, a cualquier persona que obtenga una copia de este software y los archivos de documentación asociados (el "Software"), para operar con el Software sin restricciones, incluidos, entre otros, los derechos de uso, copia, modificación, fusión. , publicar, distribuir, sublicenciar y/o vender copias del Software, y permitir que las personas a quienes se les proporciona el Software lo hagan, sujeto a las siguientes condiciones:
El aviso de derechos de autor anterior y este aviso de permiso se incluirán en todas las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE DERECHOS DE AUTOR SERÁN RESPONSABLES DE NINGÚN RECLAMO, DAÑO U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN CONTRACTUAL, AGRAVIO O DE OTRA MANERA, QUE SURJA DE, FUERA DE O EN RELACIÓN CON EL SOFTWARE O EL USO U OTRAS NEGOCIOS EN EL SOFTWARE.