Cette bibliothèque vous permet d'utiliser votre webcam intégrée ou externe directement depuis Java. Il est conçu pour résumer les fonctionnalités de caméra couramment utilisées et prendre en charge divers cadres de capture.
Supposons une situation dans laquelle votre code dépend d'un framework de capture, mais vous devez soudainement le supprimer et en utiliser un autre, peut-être plus récent (par exemple, remplacer l'archaïque JMF par le plus récent GStreamer). En faisant cela, vous devrez réécrire une partie importante de votre code car ces frameworks sont complètement différents et pas du tout compatibles. C'est là que l'API Webcam Capture vient sauver le monde - elle a été créée pour supprimer le fardeau de telles situations afin que vous n'ayez plus jamais à réécrire votre code, mais à la place, vous pouvez simplement changer la classe de pilote en une autre.
La dernière version stable est : 0.3.12
La dernière version de développement est : 0.3.13-SNAPSHOT
(et autres appareils ARM)
La dernière version (0.3.10) ne fonctionne pas sur ARM dès la sortie de la boîte. Pour que cela fonctionne, vous devez remplacer la version 0.6.2 de BridJ JAR par la 0.6.3-SNAPSHOT ou une version plus récente de bridj-0.7-20140918. De plus, dernièrement Jonathon Hare de l'équipe OpenIMAJ, a trouvé un problème décrit dans bridj #525 qui pose des problèmes sur l'architecture armhf.
La dernière version stable est disponible dans Maven Central :
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture</ artifactId >
< version >0.3.12</ version >
</ dependency >
Version instantanée :
< 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 version stable la plus récente peut être téléchargée sous forme de binaire ZIP séparé. Ce fichier ZIP contient l'API Webcam Capture elle-même et toutes les dépendances requises (dans le répertoire libs
). Cliquez sur le lien ci-dessous pour le télécharger :
webcam-capture-0.3.12-dist.zip
La dernière version de développement JAR (alias SNAPSHOT) peut être téléchargée ici.
Si vous avez une forte volonté, du temps libre, des connaissances ou même une petite somme d'argent que vous aimeriez dépenser à bon escient, vous pouvez aider à développer cette impressionnante API de capture de webcam et la rendre encore meilleure ! Plusieurs types de contributions sont les bienvenues :
Si vous pensez que ce projet est génial, que vous aimeriez aider, mais vous ne savez pas comment, vous pouvez devenir l'observateur du projet. En mettant en vedette, vous rendez le projet plus populaire. Visitez ce lien si vous souhaitez en savoir plus sur le fonctionnement des notifications et des étoiles sur Github.
Si vous avez trouvé un bug ou si vous avez trouvé une fonctionnalité fantastique qui peut faire de Webcam Capture une meilleure API à utiliser, n'hésitez pas à créer un nouveau numéro dans lequel vous pourrez décrire en détail quel est le problème, ou quoi. aimeriez-vous vous améliorer.
Étant donné que Webcam Capture utilise une partie du code natif, il est très difficile de couvrir tous les systèmes d'exploitation pris en charge. Je le teste toujours sur Ubuntu Linux 64 bits, Windows XP et Vista (tous deux 32 bits), mais je n'ai aucune possibilité de tester sur Raspberry Pi, Mac OS et Linux 32 bits. Veuillez aider et tester ces systèmes si vous avez une telle possibilité.
Si vous connaissez Java ou C++, vous pouvez aider au développement de Webcam Capture en créant un référentiel et en envoyant des demandes d'extraction. Veuillez visiter ce lien si vous ne savez pas comment contribuer au code des autres sur Github.
Les gens ont exprimé le souhait de donner un peu d'argent. Faire un don ne vous procurera rien de spécial, à part une sensation de chaleur intérieure, et me poussera peut-être à produire davantage de matériel disponible gratuitement pour le projet Webcam Capture. Vous pouvez faire un don via PayPal, cliquez simplement sur le bouton Faire un don disponible ci-dessous - il vous redirigera vers la page PayPal sécurisée où vous pourrez fournir le montant du don (il n'y a pas de valeur minimale).
Le code ci-dessous capturera l'image de votre webcam par défaut et l'enregistrera dans le fichier hello-world.png
:
Webcam webcam = Webcam . getDefault ();
webcam . open ();
ImageIO . write ( webcam . getImage (), "PNG" , new File ( "hello-world.png" ));
Vous trouverez ci-dessous de très jolis exemples de base démontrant comment l'API Webcam Capture peut être utilisée dans le code Java. Tout peut être trouvé dans le code source du projet. Veuillez noter que certains de ces exemples peuvent utiliser la dernière API qui n'a pas encore été publiée sur maven Central. Dans un tel cas, assurez-vous que vous utilisez le dernier INSTANTANÉ de l'API de capture de webcam.
WebcamPanel
WebcamPanel
WebcamImageTransformer
Et voici quelques exemples plus avancés, peu avec une interface graphique assez sophistiquée.
WebcamMotionDetector
avec la fenêtre JFrame
WebcamPanel.Painter
pour dessiner des effets sur le composant WebcamPanel
WebcamImageTransformer
pour dessiner des effets directement sur l'image de la caméraSérie de vidéos de Genuine Coder pour les débutants en capture par webcam :
L'API Webcam Capture définit l'interface WebcamDriver
qui a déjà été implémentée dans plusieurs pilotes de capture basés sur des frameworks bien connus utilisés pour travailler avec le multimédia et les caméras. La liste complète peut être trouvée ci-dessous.
Par défaut (si aucun autre pilote n'est spécifié), la bibliothèque utilise le pilote par défaut qui consiste en une petite partie raffinée du superbe framework OpenIMAJ enveloppé dans un conteneur thread-safe. Cependant, il existe d'autres pilotes prêts à l'emploi qui peuvent être utilisés en remplacement ou en complément de celui par défaut. En utilisant ces pilotes, Webcam Capture peut être étendu avec diverses nouvelles fonctionnalités (par exemple, prise en charge des caméras IP).
La liste des pilotes de capture supplémentaires comprend :
Nom du pilote | Écurie | Central | Description |
---|---|---|---|
caméra IP | Oui | Oui | Pilote pour caméra IP/réseau |
fswebcam | Oui | Oui | Pilote pour l'outil CLI FSWebcam |
gstreamer | Oui | Oui | Pilote pour le framework GStreamer |
ouverture | Oui | Oui | Pilote pour le framework OpenIMAJ |
v4l4j | Oui | Non | Pilote pour la bibliothèque V4L4j |
jmf | Oui | Oui | Pilote pour les frameworks JMF/FMJ |
lti-civil | Oui | Oui | Pilote pour la bibliothèque LTI-CIVIL |
vlcj | Oui | Oui | Pilote pour la bibliothèque vlcj |
javacv | Oui | Oui | Pilote pour la bibliothèque JavaCV |
ffmpeg-cli | poc | Non | Pilote pour l'outil CLI FFmpeg |
raspicam | poc | Non | Pilote pour l'outil Raspicam CLI PIcam |
Si aucun autre pilote n'est spécifié, le pilote par défaut sera utilisé. Il se compose d’une petite partie raffinée du superbe framework OpenIMAJ enveloppé dans un conteneur thread-safe.
Ce pilote de capture donne la possibilité d'accéder aux appareils de caméra IP et de gérer les images sous forme d'images JPEG ou de flux MJPEG.
Dépendance Maven :
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ipcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Comment utiliser :
Webcam . setDriver ( new IpCamDriver ());
Plus de détails et le téléchargement des fichiers binaires peuvent être trouvés sur la page dédiée webcam-capture-driver-ipcam.
Ce pilote de capture donne la possibilité d'utiliser l'outil CLI appelé fswebcam
(écrit par Philip Heron) pour accéder aux appareils UVC connectés à l'ordinateur. Il fonctionne uniquement sur * nix et nécessite que l'outil soit installé sur l'environnement où le pilote est utilisé.
Dépendance Maven :
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-fswebcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Comment utiliser :
Webcam . setDriver ( new FsWebcamDriver ());
Plus de détails sur l'utilisation, l'installation fswebcam
et l'endroit où les binaires peuvent être téléchargés peuvent être trouvés sur la page dédiée webcam-capture-driver-fswebcam.
Ce pilote de capture donne la possibilité d'utiliser GStreamer pour accéder aux caméras UVC connectées à l'ordinateur. Cela fonctionne uniquement sous Windows et Linux.
Dépendance Maven :
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-gstreamer</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Comment utiliser :
Webcam . setDriver ( new GStreamerDriver ());
Plus de détails sur l'utilisation, l'installation de GStreamer et l'endroit où les binaires peuvent être téléchargés peuvent être trouvés sur la page dédiée webcam-capture-driver-gstreamer.
Ce pilote de capture donne la possibilité d'utiliser OpenIMAJ pour accéder aux caméras UVC connectées à l'ordinateur.
Dépendance Maven :
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-openimaj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Comment utiliser :
Webcam . setDriver ( new OpenImajDriver ());
Plus de détails sur la façon de l'utiliser et où les binaires peuvent être téléchargés peuvent être trouvés sur la page dédiée webcam-capture-driver-openimaj.
Il s'agit d'un pilote de capture qui utilise le projet V4L4j pour accéder aux caméras UVC. Il fonctionne uniquement sous Linux et il semble qu'il soit le plus approprié pour une utilisation sur Raspberry Pi.
Dépendance Maven :
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-v4l4j</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Comment utiliser :
Webcam . setDriver ( new V4l4jDriver ());
Plus de détails sur la façon de l'utiliser et sur les endroits où les fichiers binaires nécessaires peuvent être téléchargés sont disponibles sur la page dédiée webcam-capture-driver-v4l4j.
Il s'agit d'un pilote de capture qui utilise JMF (Java Media Framework) pour accéder aux périphériques webcam UVC. Le JMF doit être installé et configuré sur le PC avant que ce pilote puisse être utilisé. Il peut également être utilisé en alternative avec le projet FMJ.
Dépendance Maven :
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-jmf</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Comment utiliser :
Webcam . setDriver ( new JmfDriver ());
Plus de détails sur la façon de l'utiliser, de l'installer et, si nécessaire, de télécharger les binaires, peuvent être trouvés sur la page dédiée webcam-capture-driver-jmf.
Il s'agit d'un pilote de capture conçu pour exploiter les capacités du projet LTI-CIVIL (par Larson Technologies Inc.) et l'utiliser pour accéder à une large gamme d'appareils UVC. Il fonctionne uniquement sur les architectures 32 bits.
Dépendance Maven :
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-lti-civil</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Comment l'utiliser :
Webcam . setDriver ( new LtiCivilDriver ());
Plus de détails sur la façon de l'utiliser, et là où les binaires nécessaires peuvent être téléchargés, peuvent être trouvés sur la page dédiée webcam-capture-driver-lti-civil.
Il s'agit d'un pilote de capture qui utilise la bibliothèque VLCj de Caprica Software Limited pour accéder au périphérique de caméra UVC.
Dépendance Maven :
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-vlcj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Comment l'utiliser :
Webcam . setDriver ( new VlcjDriver ());
Plus de détails sur la façon de l'utiliser, comment l'installer et où les binaires nécessaires peuvent être téléchargés, peuvent être trouvés sur la page dédiée webcam-capture-driver-vlcj.
Il s'agit d'un pilote de capture qui utilise la liaison JavaCV pour OpenCV pour accéder au périphérique de caméra UVC.
Dépendance Maven :
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-opencv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
ou si vous utilisez webcam-capture < 0.3.12 :
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-javacv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Si vous ciblez uniquement des plates-formes spécifiques, jetez un œil à Réduire le nombre de dépendances.
Comment l'utiliser :
Webcam . setDriver ( new JavaCvDriver ());
Plus de détails sur la façon de l'utiliser, comment l'installer et où les binaires nécessaires peuvent être téléchargés, peuvent être trouvés sur la page dédiée webcam-capture-driver-javacv.
Il s'agit d'un pilote de capture qui utilise l'outil CLI ffmpeg
de FFmpeg pour accéder au périphérique de caméra UVC.
Dépendance Maven :
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ffmpeg-cli</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Comment l'utiliser :
Webcam . setDriver ( new FFmpegCliDriver ());
Plus de détails sur la façon de l'utiliser, comment l'installer et où les binaires nécessaires peuvent être téléchargés, peuvent être trouvés sur la page dédiée webcam-capture-driver-ffmpeg-cli.
J'ai d'abord commencé à travailler sur Webcam Capture comme simple preuve de concept après avoir lu le fantastique livre d'Andrew Davison intitulé Killer Game Programming (qui est également disponible en ligne). Merci André! Plus tard, j'ai découvert qu'il y avait un désordre complet dans les API Java vous permettant de capturer des images à partir de webcams. Une fois que vous avez choisi une API spécifique, vous ne pouvez pas la modifier sans modifier de grandes parties du code. J'ai décidé de changer cette situation et d'écrire un wrapper à usage général pour différentes API (comme JMF, OpenCV, OpenIMAJ, LTI-CIVIL, VLC). C’est ainsi que Webcam Capture telle que nous la connaissons aujourd’hui a vu le jour. Aujourd'hui, vous pouvez modifier les frameworks sous-jacents simplement en remplaçant le pilote de webcam (changement de code en une seule ligne). S'il n'y a pas de pilote pour un framework particulier, il est très simple de l'écrire vous-même.
Copyright (C) 2012 - 2017 Bartosz Firyn (https://github.com/sarxos) et contributeurs
L'autorisation est accordée par la présente, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), d'utiliser le Logiciel sans restriction, y compris, sans limitation, les droits d'utilisation, de copie, de modification, de fusion. , publier, distribuer, accorder des sous-licences et/ou vendre des copies du Logiciel, et permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du logiciel.
LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS LIMITATION LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SERONT RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION CONTRACTUELLE, DÉLIT OU AUTRE, DÉCOULANT DE, DE OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL.