Bild von Webcam aufzeichnen

Andi_CH

Top Contributor
Ich suche einen konzeptionell möglichst ausbau- und veränderbaren Weg von einer Webcam zu einem bestimmten Zeitpunkt ein Bild zu speichern.

Meine Fragen:

- Gibt es einen Weg direkt von USB ein Bild zu lesen (Ich habe den heutigen Vormittag mit Versuchen verbracht - die Webcam funktioniert zwar einwandfrei, wird aber von Java-Versuchsprogrammen nicht erkannt. Im Moment habe ich eine billige USB Kamera, die aber später durch ein robusteres Modell ersetzt wird, welche möglicherweise Webserver spielt.

- Wie gross ist der Aufwand auf Webserver (für die USB-Cam) und auf JavaSeite um so ein Bild zu lesen?

- Ich bin natürlich auch offen für weitere, konstruktive Ideen.

--

Muss ich betonen, dass ich google schon kenne aber vielleicht nicht die richtigen Schllüsselworte verwendet habe? 😀
 
Guck dir mal OpenCV an. Das hat eine nette JNI Lib und läuft wunderbar auf Windoof und Linux. Ich selber arbeite mit der nativen Variante und es ist sehr mächtig
 
Ich habe mir mal die Java api von OpenCV angeschaut und würde dir abraten die zu benutzen 😀. Ein Bild zu einem bestimmten Zeitpunkt auszulesen von einer Webcam geht in C mit ungefähr 10 Zeilen und dabei ist es relativ egal ob Windows oder Linux. Also ist der Aufwand fast 0. Nun ist jetzt die Frage was du vorhast, falls du konkrete Hilfe suchst kannst mich auch direkt anschreiben.
 
Was ich will? Eine Javaprogramm soll zu einem bestimmten Zeitpunkt ein Bild von der Webcam zur Verfügung haben - die zeitliche Präzision ist nicht so relevant. (Ich sage mal 1 spätestens eine Sekunde nach dem Event)

Wie gesagt, es sind viele Wege denkbar, aber ich will mir die Möglichkeit einer Webcam mit Webserver nicht verbauen.

Ach ja wegen OpenCV- ich habe das installiert und danns teht da noch etwas CMake (Was ist das denn nur?) .... ich bin grundsätzlich ein fauler und bequemer Mensch - geht das nicht einfacher? 😀
 
Zuletzt bearbeitet:
Ich hab keine Ahnung, will aber doch einen dummen Kommentar loswerden 🙂
Sind denn alle Webcams gleich?
Oder gibt es da Unterschiede, wie man ein Bild von einer bekommen kann?
 
Ich denke schon dass die sich ähnlich verhalten und ansonsten muss halt ein abstractionLayer gemacht werden.

Eine Idee ist es ja eben die Daten über html zu streamen und spätestens dann sind die alle gleich 🙂
aber da ist ja eben die Frage wie bringe ich z.B. den Apache dazu das zu tun und wie greife ich dann aus Java auf das Bild zu.

Muss es überhaupt ein Stream sein? Ich könnte ja dem Server auch einen request schicken worauf der genau ein Bild liefert.

Ich bin gespannt auf kreative Lösungsvorschläge (und nein 🙂 Code kann ich noch keinen liefern es sind ja rein konzeptionelle Fragen)

Zum Thema Code - javax.media - dazu finde ich weder sourcode noch javadoc - findet meine Cam nicht - kein Unterschied ob die angestöpselt ist oder nicht. Kennt sich da jemand genauer aus?
 
Nach oben schieb 🙂

Keine weiteren konstruktiven Ideen wie ich in einem Java-Programm zu einem jeweils aktuellen Bild einer USB-Webam komme?

Der Umweg über einen Webserver ist machbar, aber wie kommt der Webserver zum Bild?

Die bisher geäusserten scheitern alle aus unterschiedlichen Gründen.
 
Hm, wie wäre es mit java ein externes Programm einen kurzen Film aufnehmen zu lassen und diesen dann mit java wieder einzulesen?
 
was ist denn mit diesem Framework...keine Ahnung wo und wann ich das mal gefunden habe, wirst du sicherlich -wenn denn gewünscht- leicht ergooglen können.

liefert dir ein spiegelbild der Webcam...und zeigt es dir auf einem JFrame an...
da kann man sicherlich irgendwie auch auf den Stream zugreifen. Die dsj.jar ist leider zu groß zum hochladen. Falls du sie nicht im Netz findest, kann ich sie dir gerne senden.


Java:
package video;

import de.humatic.dsj.DSCapture;
import de.humatic.dsj.DSFilterInfo;
import de.humatic.dsj.DSFiltergraph;
import javax.swing.JFrame;

public class Webcam extends JFrame {

	private DSFilterInfo[][] dsFilterInfo;
	private DSCapture dscCapture[];
	private DSCapture dsc = null;

	public Webcam() {
		super("Spiegel");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		dsFilterInfo = DSCapture.queryDevices();
		dscCapture = new DSCapture[dsFilterInfo[0].length - 1];
		dsc = new DSCapture(DSFiltergraph.D3D9, dsFilterInfo[0][0], false,
				DSFilterInfo.filterInfoForSystemProfile(2), null);
		dsc.flipImage(2);
		this.add(dsc.asComponent());
		this.setSize(400, 400);
		setLocationRelativeTo(null);
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new Webcam();
	}
}
 
Hm
dsj is free for non-commercial use. Continued usage in any kind of context that generates revenue requires a commercial use license.
By downloading any of the above packages you acknowledge to have taken notice of this and to agree to it.

Aber ich versuche es mal damit, Danke.

EDIT:
Ich habe das dsj.jar im java build path und Eclipse merkt auch dass die da ist.
In der runconfiguration ist sie im classpath und dennoch kommt beim ersten Aufruf Zeile 17 ein Exception
Code:
17: dsFilterInfo = DSCapture.queryDevices();

Java:
java.lang.UnsatisfiedLinkError: no dsj in java.library.path
Exception in thread "main" java.lang.UnsatisfiedLinkError: de.humatic.dsj.DSFiltergraph.initMethodIDs()V
	at de.humatic.dsj.DSFiltergraph.initMethodIDs(Native Method)
	at de.humatic.dsj.DSFiltergraph.<clinit>(SourceFile:143)
......
 
Zuletzt bearbeitet:
Muss es denn eine USB Webcam sein? Wenn du eh eine höherwertige Kamera kaufen willst, nimm doch eine die die Bilder über HTTP als MJEPG Stream anbieten. Da kannst du dir einfach den Stream einlesen und die Frames rauschneiden.
 
Zuletzt bearbeitet von einem Moderator:
Muss es denn eine USB Webcam sein? Wenn du eh eine höherwertige Kamera kaufen willst, nimm doch eine die die Bilder über HTTP als MJEPG Stream anbieten. Da kannst du dir einfach den Stream einlesen und die Frames rauschneiden.

Es muss nicht, aber es ist ....
Ich habe nun mal keine streamende Cam zur Verfügung und ich bin sicher, dass früher oder später noch die Anforderung kommt, dass es auch mit Billig-Cams laufen muss.

Direktzugriff per Java ist so gut wie gestorben, die Cam wird nicht erkannt.

Ich weiss dass es nicht zur Kernkompetenz der Forums hier gehört, aber ist es wirklich nicht möglich innert nützlicher Frist einen Apache dazu zu bringen jeweils das aktuelle Bild oder einen Stream zur Verfügung zu stellen?
 

Zurück
Oben