Mit dieser Bibliothek können Sie Ihre eingebaute oder externe Webcam direkt aus Java verwenden. Es wurde entwickelt, um häufig verwendete Kamerafunktionen zu abstrahieren und verschiedene Aufnahme-Frameworks zu unterstützen.
Nehmen Sie eine Situation an, in der Ihr Code von einem Erfassungsframework abhängt, Sie ihn aber plötzlich aufgeben und ein anderes, möglicherweise neueres verwenden müssen (z. B. das veraltete JMF durch den neuesten GStreamer ersetzen). Dadurch müssen Sie einen erheblichen Teil Ihres Codes neu schreiben, da diese Frameworks völlig unterschiedlich und überhaupt nicht kompatibel sind. Hier kommt die Webcam Capture API zum Einsatz, um die Welt zu retten – sie wurde entwickelt, um die Belastung durch solche Situationen zu beseitigen, sodass Sie Ihren Code nie wieder neu schreiben müssen, sondern einfach die Treiberklasse auf eine andere umstellen können.
Die neueste stabile Version ist: 0.3.12
Die neueste Entwicklungsversion ist: 0.3.13-SNAPSHOT
(und andere ARM-Geräte)
Die neueste Version (0.3.10) funktioniert sofort nach dem Auspacken nicht auf ARM. Damit es funktioniert, müssen Sie Version 0.6.2 von BridJ JAR durch 0.6.3-SNAPSHOT oder neuer bridj-0.7-20140918 ersetzen. Darüber hinaus hat Jonathon Hare vom OpenIMAJ-Team kürzlich ein in bridj #525 beschriebenes Problem gefunden, das Probleme in der ArmHF-Architektur verursacht.
Die neueste stabile Version ist in Maven Central verfügbar:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture</ artifactId >
< version >0.3.12</ version >
</ dependency >
Snapshot-Version:
< 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 >
Die neueste stabile Version kann als separate ZIP-Binärdatei heruntergeladen werden. Diese ZIP-Datei enthält die Webcam Capture API selbst und alle erforderlichen Abhängigkeiten (im libs
-Verzeichnis). Klicken Sie auf den folgenden Link, um es herunterzuladen:
webcam-capture-0.3.12-dist.zip
Die neueste Entwicklungsversion JAR (auch bekannt als SNAPSHOT) kann hier heruntergeladen werden.
Wenn Sie einen starken Willen, Freizeit, Wissen oder sogar einen kleinen Geldbetrag haben, den Sie für einen guten Zweck ausgeben möchten, können Sie bei der Entwicklung dieser fantastischen Webcam-Capture-API helfen und sie noch besser machen! Verschiedene Arten von Beiträgen sind herzlich willkommen:
Wenn Sie denken, dass dieses Projekt großartig ist, würden Sie gerne helfen, wissen aber nicht wie – Sie können der Sternengucker des Projekts werden. Indem Sie die Hauptrolle spielen, machen Sie das Projekt bekannter. Besuchen Sie diesen Link, wenn Sie mehr darüber erfahren möchten, wie Benachrichtigungen und Sterne auf Github funktionieren.
Wenn Sie einen Fehler gefunden haben oder eine fantastische Funktion entwickelt haben, die Webcam Capture zu einer besseren API machen kann, zögern Sie nicht, eine neue Ausgabe zu erstellen, in der Sie detailliert beschreiben können, wo das Problem liegt oder was Möchten Sie sich verbessern?
Da Webcam Capture einen Teil des nativen Codes verwendet, ist es sehr schwierig, alle unterstützten Betriebssysteme abzudecken. Ich teste es immer auf 64-Bit-Ubuntu-Linux, Windows XP und Vista (beide 32-Bit), aber ich habe keine Möglichkeit, es auf Raspberry Pi, Mac OS und 32-Bit-Linux zu testen. Bitte helfen Sie und testen Sie auf diesen Systemen, wenn Sie eine solche Möglichkeit haben.
Wenn Sie Java oder C++ beherrschen, können Sie bei der Entwicklung von Webcam Capture helfen, indem Sie das Repository forken und Pull-Anfragen senden. Bitte besuchen Sie diesen Link, wenn Sie nicht wissen, wie Sie auf Github zum Code anderer beitragen können.
Es wurde der Wunsch geäußert, etwas Geld zu spenden. Wenn Sie spenden, erhalten Sie nichts Besonderes, außer ein warmes Gefühl in Ihrem Inneren und möglicherweise einen Anreiz, mehr frei verfügbares Material für das Webcam Capture-Projekt zu produzieren. Sie können über PayPal spenden. Klicken Sie einfach unten auf die Schaltfläche „Spenden“. Sie werden dann zur gesicherten PayPal-Seite weitergeleitet, auf der Sie den Spendenbetrag angeben können (es gibt keinen Mindestwert).
Der folgende Code erfasst ein Bild von Ihrer Standard-Webcam und speichert es in der Datei hello-world.png
:
Webcam webcam = Webcam . getDefault ();
webcam . open ();
ImageIO . write ( webcam . getImage (), "PNG" , new File ( "hello-world.png" ));
Nachfolgend finden Sie sehr hübsche Basisbeispiele, die veranschaulichen, wie die Webcam Capture API im Java-Code verwendet werden kann. Alles ist im Quellcode des Projekts zu finden. Bitte beachten Sie, dass einige dieser Beispiele möglicherweise die neueste API verwenden, die noch nicht für Maven Central veröffentlicht wurde. Stellen Sie in einem solchen Fall bitte sicher, dass Sie die neueste Webcam Capture API SNAPSHOT verwenden.
WebcamPanel
angezeigte BildWebcamPanel
angezeigte BildWebcamImageTransformer
Und hier sind einige fortgeschrittenere Beispiele, einige davon mit einer recht ausgefallenen Benutzeroberfläche.
WebcamMotionDetector
mit dem JFrame
-FensterWebcamPanel.Painter
-Schnittstelle, um Effekte auf WebcamPanel
-Komponente zu zeichnenWebcamImageTransformer
, um Effekte direkt von der Kamera auf das Bild zu zeichnenVideoserie von Genuine Coder für Webcam-Capture-Anfänger:
Die Webcam Capture API definiert WebcamDriver
Schnittstelle, die bereits in mehreren Capture-Treibern implementiert wurde, die auf bekannten Frameworks für die Arbeit mit Multimedia und Kameras basieren. Die vollständige Liste finden Sie unten.
Standardmäßig (sofern kein anderer Treiber angegeben ist) verwendet die Bibliothek den Standardtreiber , der aus einem kleinen, raffinierten Teil des großartigen OpenIMAJ-Frameworks besteht, das in einem threadsicheren Container verpackt ist. Es gibt jedoch weitere gebrauchsfertige Treiber, die als Ersatz oder Ergänzung zum Standardtreiber verwendet werden können. Durch die Verwendung dieser Treiber kann Webcam Capture um verschiedene neue Funktionen erweitert werden (z. B. Unterstützung für IP-Kameras).
Die Liste der zusätzlichen Capture-Treiber umfasst:
Fahrername | Stabil | Zentral | Beschreibung |
---|---|---|---|
IPcam | Ja | Ja | Treiber für IP-/Netzwerkkamera |
fswebcam | Ja | Ja | Treiber für das FSWebcam CLI-Tool |
gstreamer | Ja | Ja | Treiber für das GStreamer-Framework |
openimaj | Ja | Ja | Treiber für das OpenIMAJ-Framework |
v4l4j | Ja | NEIN | Treiber für die V4L4j-Bibliothek |
jmf | Ja | Ja | Treiber für JMF/FMJ-Frameworks |
lti-zivil | Ja | Ja | Treiber für die LTI-CIVIL-Bibliothek |
vlcj | Ja | Ja | Treiber für die VLCJ-Bibliothek |
javacv | Ja | Ja | Treiber für die JavaCV-Bibliothek |
ffmpeg-cli | poc | NEIN | Treiber für das FFmpeg-CLI-Tool |
Raspicam | poc | NEIN | Treiber für das Raspicam CLI PIcam-Tool |
Wenn kein anderer Treiber angegeben ist, wird der Standardtreiber verwendet. Es besteht aus einem kleinen, raffinierten Teil des großartigen OpenIMAJ-Frameworks, das in einem Thread-sicheren Container verpackt ist.
Dieser Capture-Treiber bietet die Möglichkeit, auf IP-Kamerageräte zuzugreifen und Bilder in Form von JPEG-Bildern oder MJPEG-Streams zu verarbeiten.
Maven-Abhängigkeit:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ipcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Anwendung:
Webcam . setDriver ( new IpCamDriver ());
Weitere Details und den Download von Binärdateien finden Sie auf der speziellen Webcam-Capture-Treiber-IPCam-Seite.
Dieser Capture-Treiber bietet die Möglichkeit, mit dem CLI-Tool fswebcam
(geschrieben von Philip Heron) auf an den Computer angeschlossene UVC-Geräte zuzugreifen. Es funktioniert nur unter *nix und erfordert die Installation des Tools in der Umgebung, in der der Treiber verwendet wird.
Maven-Abhängigkeit:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-fswebcam</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Anwendung:
Webcam . setDriver ( new FsWebcamDriver ());
Weitere Einzelheiten zur Verwendung, Installation fswebcam
und wo Binärdateien heruntergeladen werden können, finden Sie auf der speziellen Seite „webcam-capture-driver-fswebcam“.
Dieser Aufnahmetreiber ermöglicht die Verwendung von GStreamer für den Zugriff auf UVC-Kamerageräte, die an den Computer angeschlossen sind. Es funktioniert nur unter Windows und Linux.
Maven-Abhängigkeit:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-gstreamer</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Anwendung:
Webcam . setDriver ( new GStreamerDriver ());
Weitere Einzelheiten zur Verwendung, Installation von GStreamer und wo Binärdateien heruntergeladen werden können, finden Sie auf der speziellen Seite „webcam-capture-driver-gstreamer“.
Dieser Capture-Treiber ermöglicht die Verwendung von OpenIMAJ für den Zugriff auf UVC-Kamerageräte, die an den Computer angeschlossen sind.
Maven-Abhängigkeit:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-openimaj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Anwendung:
Webcam . setDriver ( new OpenImajDriver ());
Weitere Einzelheiten zur Verwendung und wo Binärdateien heruntergeladen werden können, finden Sie auf der speziellen Seite „webcam-capture-driver-openimaj“.
Dies ist ein Capture-Treiber, der das V4L4j-Projekt verwendet, um auf UVC-Kamerageräte zuzugreifen. Es funktioniert nur unter Linux und scheint am besten für die Verwendung auf Raspberry Pi geeignet zu sein.
Maven-Abhängigkeit:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-v4l4j</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Anwendung:
Webcam . setDriver ( new V4l4jDriver ());
Weitere Einzelheiten zur Verwendung und wo erforderliche Binärdateien heruntergeladen werden können, finden Sie auf der speziellen Seite „webcam-capture-driver-v4l4j“.
Dies ist ein Capture-Treiber, der JMF (Java Media Framework) verwendet, um auf UVC-Webcam-Geräte zuzugreifen. Der JMF muss auf dem PC installiert und konfiguriert werden, bevor dieser Treiber verwendet werden kann. Alternativ kann es auch mit dem FMJ-Projekt verwendet werden.
Maven-Abhängigkeit:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-jmf</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Anwendung:
Webcam . setDriver ( new JmfDriver ());
Weitere Informationen zur Verwendung und Installation sowie zum Herunterladen der Binärdateien bei Bedarf finden Sie auf der speziellen Seite „webcam-capture-driver-jmf“.
Hierbei handelt es sich um einen Erfassungstreiber, der die Funktionen des LTI-CIVIL-Projekts (von Larson Technologies Inc.) nutzen und für den Zugriff auf eine Vielzahl von UVC-Geräten verwenden soll. Es funktioniert nur auf 32-Bit-Architekturen.
Maven-Abhängigkeit:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-lti-civil</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
So verwenden Sie es:
Webcam . setDriver ( new LtiCivilDriver ());
Weitere Einzelheiten zur Verwendung und wo erforderliche Binärdateien zum Herunterladen finden Sie auf der speziellen Seite „webcam-capture-driver-lti-civil“.
Dies ist ein Capture-Treiber, der die VLCj-Bibliothek von Caprica Software Limited verwendet, um Zugriff auf das UVC-Kameragerät zu erhalten.
Maven-Abhängigkeit:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-vlcj</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
So verwenden Sie es:
Webcam . setDriver ( new VlcjDriver ());
Weitere Einzelheiten zur Verwendung und Installation sowie zum Herunterladen der erforderlichen Binärdateien finden Sie auf der speziellen Seite „webcam-capture-driver-vlcj“.
Dies ist ein Capture-Treiber, der die JavaCV-Bindung für OpenCV verwendet, um Zugriff auf das UVC-Kameragerät zu erhalten.
Maven-Abhängigkeit:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-opencv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
oder wenn Sie Webcam-Capture < 0.3.12 verwenden:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-javacv</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
Wenn Sie nur auf bestimmte Plattformen abzielen, werfen Sie einen Blick auf die Reduzierung der Anzahl von Abhängigkeiten.
So verwenden Sie es:
Webcam . setDriver ( new JavaCvDriver ());
Weitere Einzelheiten zur Verwendung und Installation sowie zum Herunterladen der erforderlichen Binärdateien finden Sie auf der speziellen Seite „webcam-capture-driver-javacv“.
Dies ist ein Aufnahmetreiber, der ffmpeg
CLI-Tool von FFmpeg verwendet, um auf das UVC-Kameragerät zuzugreifen.
Maven-Abhängigkeit:
< dependency >
< groupId >com.github.sarxos</ groupId >
< artifactId >webcam-capture-driver-ffmpeg-cli</ artifactId >
< version >{webcam-capture-version-here}</ version >
</ dependency >
So verwenden Sie es:
Webcam . setDriver ( new FFmpegCliDriver ());
Weitere Einzelheiten zur Verwendung und Installation sowie zum Herunterladen der erforderlichen Binärdateien finden Sie auf der speziellen Seite „webcam-capture-driver-ffmpeg-cli“.
Ich begann zunächst mit der Arbeit an Webcam Capture als einfachen Proof-of-Concept, nachdem ich Andrew Davisons fantastisches Buch mit dem Titel „Killer Game Programming“ gelesen hatte (das auch online verfügbar ist). Danke Andreas! Später stellte ich fest, dass die Java-APIs, die es ermöglichen, Bilder von Webcams aufzunehmen, völlig durcheinander sind. Sobald Sie eine bestimmte API ausgewählt haben, können Sie diese nicht mehr ändern, ohne große Teile des Codes zu ändern. Ich habe beschlossen, diese Situation zu ändern und Allzweck-Wrapper für verschiedene APIs (wie JMF, OpenCV, OpenIMAJ, LTI-CIVIL, VLC) zu schreiben. Auf diese Weise wurde Webcam Capture, wie wir es heute kennen, zum Leben erweckt. Heutzutage können Sie die zugrunde liegenden Frameworks ändern, indem Sie einfach den Webcam-Treiber ersetzen (eine Codeänderung in einer Zeile). Wenn es für ein bestimmtes Framework keinen Treiber gibt, ist es sehr einfach, ihn selbst zu schreiben.
Copyright (C) 2012 – 2017 Bartosz Firyn (https://github.com/sarxos) und Mitwirkende
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, mit der Software ohne Einschränkung zu handeln, einschließlich und ohne Einschränkung der Rechte zur Nutzung, zum Kopieren, Ändern und Zusammenführen , Kopien der Software zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen und Personen, denen die Software zur Verfügung gestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHT-INHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, WEDER AUS EINER VERTRAGLICHEN HANDLUNG, AUS unerlaubter Handlung ODER ANDERWEITIG, DIE SICH AUS, AUS ODER IN ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN IN DER SOFTWARE ERGEBEN SOFTWARE.