Wie kann ich kontinuierlich Bilder von einer Webcam aufnehmen?
Ich möchte mit der Objekterkennung experimentieren (indem ich möglicherweise das Java Media Framework verwende).
Ich dachte daran, zwei Threads zu erstellen
ein Thread:
- Knoten 1: Livebild aufnehmen
- Knoten 2: Bild als "1.jpg" speichern
- Knoten 3: Warten Sie 5 Sekunden
- Knoten 4: Wiederholen ...
anderer Thread:
- Knoten 1: Warten Sie, bis das Bild aufgenommen wurde
- Knoten 2: Mit "1.jpg" erhalten Sie Farben von jedem Pixel
- Knoten 3: Daten in Arrays speichern
- Knoten 4: Wiederholen ...
Antworten:
Diese JavaCV-Implementierung funktioniert einwandfrei.
Code:
Es gibt auch Post-On-Konfiguration für JavaCV
Sie können die Codes ändern und die Bilder in regelmäßigen Abständen speichern und den Rest der gewünschten Verarbeitung durchführen.
quelle
Vor einiger Zeit habe ich eine generische Java-Bibliothek erstellt, mit der Bilder mit einer PC-Webcam aufgenommen werden können. Die API ist sehr einfach, nicht überfunktioniert, kann eigenständig arbeiten, unterstützt aber auch zusätzliche Webcam-Treiber wie OpenIMAJ, JMF, FMJ, LTI-CIVIL usw. und einige IP-Kameras.
Der Link zum Projekt lautet https://github.com/sarxos/webcam-capture
Beispielcode (Bild aufnehmen und in test.jpg speichern):
Es ist auch im Maven Central Repository oder als separate ZIP-Datei verfügbar, die alle erforderlichen Abhängigkeiten und JARs von Drittanbietern enthält.
quelle
JMyron ist sehr einfach zu bedienen. http://webcamxtra.sourceforge.net/
quelle
Hier ist eine ähnliche Frage mit einigen - aber nicht akzeptierten - Antworten. Einer von ihnen erwähnt FMJ als Java-Alternative zu JMF.
quelle
Diese Art von geht von gt_ebuddys Antwort mit JavaCV aus, aber meine Videoausgabe hat eine viel höhere Qualität als seine Antwort. Ich habe auch einige andere zufällige Verbesserungen hinzugefügt (z. B. das Programm schließen, wenn ESCund CTRL+Cgedrückt werden, und sicherstellen, dass die vom Programm verwendeten Ressourcen ordnungsgemäß geschlossen werden).
quelle
Sie können auch die Java Webcam SDK- Bibliothek ausprobieren . Das SDK-Demo-Applet ist unter dem Link verfügbar .
quelle
Ich habe JMF für eine Videokonferenzanwendung verwendet und es funktionierte gut auf zwei Laptops: einem mit integrierter Webcam und einem mit einer alten USB-Webcam. Es erfordert, dass JMF vorher installiert und konfiguriert wird, aber wenn Sie fertig sind, können Sie ziemlich einfach über Java-Code auf die Hardware zugreifen.
quelle
Sie können Marvin Framework ausprobieren . Es bietet eine Schnittstelle für die Arbeit mit Kameras. Darüber hinaus bietet es eine Reihe von Echtzeit-Videoverarbeitungsfunktionen wie Objektverfolgung und Filterung.
Schau mal!
Demo zur Echtzeit-Videoverarbeitung:
http://www.youtube.com/watch?v=D5mBt0kRYvk
Sie können die folgende Quelle verwenden. Speichern Sie einfach alle 5 Sekunden einen Frame mit MarvinImageIO.saveImage () .
Webcam-Video-Demo:
Für diejenigen, die nur ein einziges Bild machen möchten:
WebcamPicture.java
quelle
http://grack.com/downloads/school/enel619.10/report/java_media_framework.html
Verwenden des Players mit Swing
Der Player kann auch problemlos in einer Swing-Anwendung verwendet werden. Der folgende Code erstellt ein Swing-basiertes TV-Aufnahmeprogramm, bei dem die Videoausgabe im gesamten Fenster angezeigt wird:
quelle
Ich habe die Webcam Capture-API verwendet ... Sie können sie von dieser http://webcam-capture.sarxos.pl/ herunterladen.
quelle
Java greift normalerweise nicht gerne auf Hardware zu, daher benötigen Sie ein Treiberprogramm, wie goldenmean sagte. Ich habe dies auf meinem Laptop getan, indem ich ein Befehlszeilenprogramm gefunden habe, das ein Bild aufnimmt. Dann ist es das gleiche wie goldenmean erklärt; Sie führen das Befehlszeilenprogramm von Ihrem Java-Programm in der Routine takepicture () aus, und der Rest Ihres Codes wird genauso ausgeführt.
Mit Ausnahme des Teils zum Lesen von Pixelwerten in ein Array ist es möglicherweise besser, die Datei in BMP zu speichern, das bereits fast dieses Format aufweist, und dann die Standard-Java-Bildbibliotheken zu verwenden.
Die Verwendung eines Befehlszeilenprogramms fügt Ihrem Programm eine Abhängigkeit hinzu und macht es weniger portabel. Aber war die Webcam auch richtig?
quelle
Empfehlen Sie die Verwendung von FMJ für eine multimediale Java-App.
quelle
Ich glaube, dass die Web-Cam-Anwendungssoftware, die mit der Web-Cam geliefert wird, oder Ihre native Windows-Webcam-Software nach dem Einschalten der Web-Cam in einem Batch-Skript (Windows / Dos-Skript) ausgeführt werden kann (dh wenn sie eine externe Stromversorgung benötigt) liefern). Im Bacth-Skript können Sie eine angemessene Verzögerung für die Erfassung nach einem bestimmten Zeitraum hinzufügen. Führen Sie den Erfassungsbefehl weiterhin in einer Schleife aus.
Ich denke das sollte möglich sein
-ANZEIGE
quelle
Es gibt eine ziemlich schöne Oberfläche dafür in der Verarbeitung , die eine Art Pidgin Java ist, das für Grafiken entwickelt wurde. Es wird in einigen Bilderkennungsarbeiten wie diesem Link verwendet.
Je nachdem, was Sie davon benötigen, können Sie möglicherweise die dort in Java verwendete Videobibliothek laden, oder wenn Sie nur damit herumspielen, können Sie möglicherweise die Verarbeitung selbst verwenden.
quelle
FMJ kann dies ebenso wie die von ihm verwendete unterstützende Bibliothek LTI-CIVIL. Beide sind auf Quellschmiede.
quelle
Versuchen Sie es mit JMyron. So verwenden Sie Webcam mit Java . Ich denke, JMyron ist der einfachste Weg, mit Java auf eine Webcam zuzugreifen. Ich habe versucht, es mit einem 64-Bit-Prozessor zu verwenden, aber es gab mir einen Fehler. Auf einem 32-Bit-Prozessor funktionierte es jedoch einwandfrei.
quelle