kamera auslösen durch Programm

fill

Mitglied
Hallo allezusammen!
ich bin gerade dabei einen Schach-Roboter zu bauen und zu programmieren. Dieser wird mit dem Computer kommunizieren.
Ich möchte am liebsten eine kamera über dem Spielfeld positionieren, um die "Zugeingabe" abzufragen und den Spielzug zu erkennen, den der Spieler gemacht hat.
Ich habe eine
casio EX-S500
Diese scheint einen Usb-Anschluss zu haben.
Ich frage mich jetzt ob es im prinzip möglich ist, den Computer im Programmablauf automatisiert die Kamera auslösen zu lassen und dann das ergebnis auswerten zu lassen.
Was meint ihr? Ist das eine gute Idee?
Bin auf jedes Feedback heiß ;)
mfg fill
 

fill

Mitglied
ich habe leider keine webcam. Und ich wollte mir dafür eigentlich auch keine kaufen.
Wäre es denn mit einer Webcam möglich?
 

nrg

Top Contributor
könnte mir vorstellen, dass wenn die webcam genau auf das spielfeld gerichtet ist, man das feld proportional teilen kann. dann kann man die figuren, deren position ja zum glück am anfang feststehen, einlesen und muss eigentlich "nur" veränderungen registrieren. das bringt natürlich auch einige probleme mit, wie zb hände die übers spielfeld greifen oä. das ganze stabil und verlässlich zu programmieren stelle ich mir am zweitschwersten vor... welche figur wann auf welcher position steht und das herausfinden wie genau gezogen wurde halte ich da für das kleinere übel. am schwersten wird wohl die ki sein, die den nächsten zug berechnet...
 

fill

Mitglied
erstmal danke für die Antworten, bis jetzt! :)

könnte mir vorstellen, dass wenn die webcam genau auf das spielfeld gerichtet ist, man das feld proportional teilen kann.
so hatte ich das gedacht, genau.
dann kann man die figuren, deren position ja zum glück am anfang feststehen, einlesen und muss eigentlich "nur" veränderungen registrieren. das bringt natürlich auch einige probleme mit, wie zb hände die übers spielfeld greifen oä. das ganze stabil und verlässlich zu programmieren stelle ich mir am zweitschwersten vor.
wenn man etwas darüber nachdenkt, dann muss "nur" zwischen, dem Feld, den weißen und den schwarzen Figuren, und allen "störungen" unterschieden werden.
Die genaue Figur durch das foto/video zu erkennen, also zb. bauer der läufer, ist überhaupt nicht nötig. Es wird registriert, wenn eine Figur nicht mehr dort steht wo sie einmal stand(was bedeutet, dass diese Figur bewegt wurde. Diese Figur kann dann ermittelt werden, da das Programm jederzeit "weiß" wo welche Figur ist, da , wie gesagt, zu beginn immer die gleiche situation herscht. Dann wird auf dem Foto/video nur noch die stelle gesucht, wo jetzt eine Figur steht, die vorher noch nicht da war, oder wo eine Figur, die Farbe gewechselt hat, bzw. geschlagen wurde.
So hatte ich mir die Auswertung der Daten gedacht. Die sollte dann immer statt finden, sobald eine "Störung", sprich Hand des Spielers, ins Bild kommt, und wieder verlässt. Sollte eine Störung erkannt werden obwohl der Spieler keinen Zug gemacht hat, wird auch keine veränderung des Spielfeldes erkannt, da es keine gab.
Ich denke das würde soweit in Ordnung gehen, wenn der Kontrast hoch genug ist.

Pu, jetzt bin ich etwas ausgeschweift. Ich hoffe es stört niemanden, dass ich Javatechnisch umganssprachlich rede.
Wenn ihr einen Denk/Logigfehler findet oder euch selbst was gutes einfällt, würde ich es gerne hören. danke

am schwersten wird wohl die ki sein, die den nächsten zug berechnet...

Das könnte in der Tat sein. Ich werde versuchen das ganze mit einer Art MiniMax Lösung hinzukriegen. Allerdings ist das auch ne ganz andere Kiste, und zum Testen und so weiter, des restes des Programms, würde ich mich auch mit einer Zufalls KI zufrieden geben. ( zur not kann man sich vieleicht eine mehr oder weniger fertige KI aus dem internet besorgen... obwohl ich schon gerne alles allein schaffen würde... mal sehen)

Ich frage mich aber immernoch ob ich meine Kamera überhaupt durch das Programm steuern und auf dessen Bilder zugreifen kann... weiß das keiner?

mfg fill
 

Landei

Top Contributor
Die Antwort würde mich auch interessieren, ich habe ein ähnliches Problem (bei mir muss es aus vor allem wegen der Auflösung eine Kamera sein)
 

w0ddes

Bekanntes Mitglied
Bei allen Kameras die ich kenne, dient der USB anschluss ja nur dem Zugriff auf den Speicher der Kamera. Habe es noch nie gesehen, dass man eine "normale" Fotokamera per USB auslösen kann ...
 

fill

Mitglied
Bei allen Kameras die ich kenne, dient der USB anschluss ja nur dem Zugriff auf den Speicher der Kamera. Habe es noch nie gesehen, dass man eine "normale" Fotokamera per USB auslösen kann ...

Habe ich auch noch nicht, aber andererseits braucht man das ja auch fast nie, daher muss das nichts heißen.
Mich beschleicht aber langsam auch die Ahnung, das eine Webcam vieleicht die bessere Lösung sein könnte. Aber bevor ich mir für teures Geld eine WEbcam kaufe, möchte ich aber Gweissheit, dass es dann auch funktionieren wird. ;)

mfg fill
 

xip

Bekanntes Mitglied
Hi,

habe mich auch lange Zeit damit beschäftig Kamerabilder auszuwerten. Naja,.....

Meiner Ansicht nach das einzige was du, wenn du auf reiner Java Basis bleiben möchtest, verwendent könntest wären für die Objekterkennung Neuronale Netze. Das ist allerdings super heftig!!!

Die Bilderfassung in Java kannst du mit JMF wunderbar hinkriegen. Die Anbindung ist einfach. Aber die Auswertung im Neuronalen Netz ist der Horror.

Ich würde dir empfehlen schau dir mal OpenCV an. Das ist eine Software die speziel für optische Auswertung gedacht ist. Dabei wird die Kamera direkt angesprochen und du kannst gleich deine Schachfiguren "anlernen", sodass sie erkannt werden.

Die Implementierung in Java geht nur über JNI.

Ansonsten geh auf .NET und Co.

Ich hoffe ich konnte dir helfen.

Gruß
xip
 
G

Gast2

Gast
Bei allen Kameras die ich kenne, dient der USB anschluss ja nur dem Zugriff auf den Speicher der Kamera. Habe es noch nie gesehen, dass man eine "normale" Fotokamera per USB auslösen kann ...
da gibt es einige ... dafür stellt aber der Hersteller auch eine entsprechende API zur Verfügung (hatte ich erst Anfang letzten Jahres, Olympus[?])

Meiner Ansicht nach das einzige was du, wenn du auf reiner Java Basis bleiben möchtest, verwendent könntest wären für die Objekterkennung Neuronale Netze.
simple Differenzbildanalyse - wie der OP es schon anmerkte reicht aus für experimentelle Züge

Das ist allerdings super heftig!!!
nur aufwendig dem Kind alles bei zu bringen
 

fill

Mitglied
vielen dank erstmal für die vielen Informationen!
:)

Meiner Ansicht nach das einzige was du, wenn du auf reiner Java Basis bleiben möchtest, verwendent könntest wären für die Objekterkennung Neuronale Netze. Das ist allerdings super heftig!!!

neurale Netze ist mir wirklich eine Stufe zu hoch, und ich denke (hoffe), dass ich es nicht brauche.

simple Differenzbildanalyse - wie der OP es schon anmerkte reicht aus für experimentelle Züge

Differenzbildanalyse hört sich für mich schon passender an.

Die Bilderfassung in Java kannst du mit JMF wunderbar hinkriegen. Die Anbindung ist einfach. Aber die Auswertung im Neuronalen Netz ist der Horror.

Soweit ich alles richtig verstehe, kann ich mir mit JMF zugriff auf medien holen, aber in keiner Weise auswerten. Mir würde zum Beispiel schon reichen von einem Pixel des Bildes die Farben (RGB) zu haben.
Geht so etwas mit JMF oder nicht?

Ich würde dir empfehlen schau dir mal OpenCV an. Das ist eine Software die speziel für optische Auswertung gedacht ist. Dabei wird die Kamera direkt angesprochen und du kannst gleich deine Schachfiguren "anlernen", sodass sie erkannt werden.

das hört sich auch ganz passend an. kann man die sache mit JMF und OpenCV zum laufen bringen?

edit:ich habe jetzt eine webcam, die ich so erstmal benutzen kann
 
Zuletzt bearbeitet:

xip

Bekanntes Mitglied
Hi,

wenn du dir JMF installierst, greift dieses auf deine Webcam zu. Über das JMF kannst du dann direkt in Java das Bild/Video abgreifen und dann alles untersuchen. Könntest locker eine Differenzbildanalyse machen. Gibs haufenweise wirklich gute Tutorials und Sourcecodes im Netz. Das ist wirklich super easy zu handeln.

Wenn du merkst es klappt nicht mit einer Differenzbildanalyse versuch mal OpenCV. Das ist eine Komplettlösung. Dies Software nimmt das Bild über eine Kamera auf und erkennt du von dir angelernten Objekte. Bin hier hin hat das nichts mit Programmierung zu tun. Recht easy. Dann kannst du über eine API abfragen, wo z.B. das Objekt x ist? In welchem Winkel es steht und Co. Dafür gibs allerdings noch keine JAVA Api. Es gibt eine, aber die kannste knicken. Über .NET oder direkt in C++ kannste das Teil super einbinden.
 

TobiTobsen

Aktives Mitglied
Hey,
schau mal unter Forum Home - NUI Group Community Forums vorbei.
Das ist ein Forum in dem sich Leute tummeln die sich mit neuen mensch-computer interaktionen beschäftigen.
Vielfach werden diese Interaktionen mit Kameratracking erledigt, idR zwar mit IR Kameras aber auch mit normalen webcams.
Ähnliche systeme werden zum beispiel auch in diesen Leergutautomaten genutzt wenn Getränkekästen überprüft werden wieviele Flachen drin sind und so. Da gibt es industrielle Lösungen mit Kameras und fertiger Trackingsoftware.
Selber bauen fände ich aber auch besser ;-).

Cheers,
Tobi
 

fill

Mitglied
danke an xip , nochmal! :)
ich werde es mit jmf mal probieren, und mich da ein bisschen schlau machen.
danke auch an alle die hier was beigetragen haben!
mfg fill
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N 3d Grafik Kamera Allgemeine Java-Themen 2
S USB-Kamera mit Java auslesen? Allgemeine Java-Themen 3
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
Q Selbständig ActionEvent auslösen zum Daten senden über serielle Schnittstelle Allgemeine Java-Themen 7
C Auslesen auslösen über Button-Click Allgemeine Java-Themen 8
C Event Handling ActionListener manuell auslösen Allgemeine Java-Themen 8
H KeyEvent auslösen Allgemeine Java-Themen 2
MQue Auslösen eines Events beim Drücken eines Buttons Allgemeine Java-Themen 12
E Button: Event auslösen Allgemeine Java-Themen 7
B event kunstlich auslösen Allgemeine Java-Themen 8
M Events im Quellcode auslösen Allgemeine Java-Themen 4
L Exception auslösen, um while Schlaufe zu verlassen(rxtx.org) Allgemeine Java-Themen 6
G Events auslösen Allgemeine Java-Themen 3
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
H Dienst durch ssh forwarding absichern? Allgemeine Java-Themen 15
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
P Karate API Test läuft nicht durch . initializationError Allgemeine Java-Themen 21
Y Wie bekomme ich durch getImage an das Image heran? Allgemeine Java-Themen 1
T Meine Frage lautet wie ich 2 CSV Dateien miteinander in Java verbinde und Spalten die zueinander gehören durch den gleichen Key zusammen ausgebe? Allgemeine Java-Themen 5
W Java Telegram Bot - Eingabe durch User Allgemeine Java-Themen 2
Drachenbauer Wie kann ich das Wort "concrete" in einem String durch ein anderes Wort ersetzen lassen? Allgemeine Java-Themen 5
I Buchstabe durch seinen Nachfolger ersetzen Allgemeine Java-Themen 29
M Jdeps-Error durch multi-release Allgemeine Java-Themen 6
J Reflection Aufruf: .class durch .dll ersetzen Allgemeine Java-Themen 4
mrbig2017 Threads wait wird nicht durch notify beendet! Allgemeine Java-Themen 3
C OpenCl Setup und durch JavaCode ansteuern Allgemeine Java-Themen 17
J Erste Schritte Datenspeicherung durch Java Allgemeine Java-Themen 6
M Hässliche Schrift auf Graphics durch deriveFont Allgemeine Java-Themen 0
R Variable durch mehrere Methoden ändern und nutzen Allgemeine Java-Themen 17
Aruetiise Interface Position durch JButton ermitteln Allgemeine Java-Themen 5
K Jar/DLL Abhängigkeiten durch User angeben lassen Allgemeine Java-Themen 6
4 Swing Durch klicken auf Button Labels einem Panel hinzufügen Allgemeine Java-Themen 4
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
T AWT AWT-EventQueue-0 Null_Pointer_Exception durch Variable Allgemeine Java-Themen 12
RalleYTN Problem bei Schleife die durch einen 2D raum iterieren soll Allgemeine Java-Themen 1
C Durch klicken von Button in GUI wird leeres Fenster geöffnet und nicht mein Spiel "Memory" Allgemeine Java-Themen 13
T Quadrieren einer Zahl nur durch Addition Allgemeine Java-Themen 5
L Vererbung If-Else ersetzen durch was? Allgemeine Java-Themen 20
K OOP OOP Gui Spiel + Vererbungen Probleme durch Nichtwissen!! Allgemeine Java-Themen 1
I CountDown wird durch JOptionPane unterbrochen Allgemeine Java-Themen 11
F JTable mit Zellen die sich durch andere Eingaben füllen Allgemeine Java-Themen 1
B Counting Sort (Sortieren durch Zählen) Allgemeine Java-Themen 13
Z Durch Bäume iterieren Allgemeine Java-Themen 3
M Unterbrechnung durch Echtzeitbefehle? Allgemeine Java-Themen 4
G Suchweg durch Binärbaum speichern Allgemeine Java-Themen 4
L Label- & Textfelderzeugung durch Button Allgemeine Java-Themen 1
S RandomAccessFile durch bytearrayinputstream ersetzen Allgemeine Java-Themen 4
H Java Leistungssteigerung durch Code Anpassung Allgemeine Java-Themen 5
H Optimierung durch Threads Allgemeine Java-Themen 31
S JTable: Model durch ein anderes ersetzen Allgemeine Java-Themen 2
P Variablen Auf durch for-Schleife generierte JComboBox zugreifen Allgemeine Java-Themen 3
T Code durch eigenes Frame pausieren (ähnlich JDialog) Allgemeine Java-Themen 4
F Live Ticker durch Screenshots Allgemeine Java-Themen 22
C Hex Zeichen ersetzen durch leer Zeichen Allgemeine Java-Themen 5
M Verschlüsselung von Text und Files durch RSA (Encoding Problem) Allgemeine Java-Themen 7
N Algorithmus durch Workflow Allgemeine Java-Themen 7
R Windows-Firewall lässt Java nicht durch Allgemeine Java-Themen 17
E Oracle kann durch 0 teilen !?! Allgemeine Java-Themen 7
E NetBeans Vector durch ArrayList ersetzen Allgemeine Java-Themen 4
J Java Datei durch Java Datei öffnen Allgemeine Java-Themen 16
M Arraynamen durch Variable festlegen lassen Allgemeine Java-Themen 5
R Implementierung eines Interface durch 2 verschiedene Klassen Allgemeine Java-Themen 6
S Bildaufbau durch Servlet -> Exception Allgemeine Java-Themen 11
F Slash durch Systembezogenen Fileseparator ersetzen Allgemeine Java-Themen 18
P JFormattedTextField für durch Semikolon getrennte Integer-Werte gesucht / Regulärer Ausdruck Allgemeine Java-Themen 3
M Eclipse drei slashs durch zwei ersetzen? Allgemeine Java-Themen 3
D Updaten von Klassen durch jar.exe zerstört diese. Update durch WinRAR gelingt! Allgemeine Java-Themen 2
A SWT Ausgabetext Shellscript durch Java Allgemeine Java-Themen 8
Ark Array durch Interface ersetzen Allgemeine Java-Themen 7
K Objekt einer konkreten Implementierung eines Interfaces durch übergebenen String Allgemeine Java-Themen 2
fastjack Hardwareinformationen durch Java auslesen Allgemeine Java-Themen 7
S durch Code steppen Allgemeine Java-Themen 7
E Durch System.in.read() blockierten Thread stoppen Allgemeine Java-Themen 10
M eigene Klasse durch Composition mit java.io.File erweitern Allgemeine Java-Themen 3
C Markierung durch Maus lesen Allgemeine Java-Themen 9
T Synchronisation von Listen bei Zugriffen durch mehrere Prozesse Allgemeine Java-Themen 15
N Scanner läuft nicht durch Allgemeine Java-Themen 2
M Maus durch JavaProgramm bewegen Allgemeine Java-Themen 2
Dissi Itext - Anordnung von Elementen durch PDF Writer Allgemeine Java-Themen 2
N Casten durch generic vermeiden ?? Allgemeine Java-Themen 10
H Performancegewinn durch Mehrfachobjeknutzung Allgemeine Java-Themen 3
N Fehler abfang läuft doppelt durch Allgemeine Java-Themen 2
H Performance Vorteil durch Wechsel der JVM? Allgemeine Java-Themen 6
G String.replaceall - mehrere Zeichen durch eines ersetzen Allgemeine Java-Themen 5
S Testen einer Anwendung durch klicken von Koordinaten Allgemeine Java-Themen 7
N int[] eindeutig durch eine Zahl repräsentieren Allgemeine Java-Themen 12
GilbertGrape Durch JDK debuggen Allgemeine Java-Themen 2
Q Objekte durch Reflection erzeugen Allgemeine Java-Themen 18
Chris81T Performance Problem durch mehrfaches Starten eines JAVA Prog Allgemeine Java-Themen 8
G Schleife durch Button beenden Allgemeine Java-Themen 6
royale Breitendurchlauf / Dijkstra durch Graph, vereinfacht Allgemeine Java-Themen 3
Hawkes Beschädigte Tarballs durch JavaTar Allgemeine Java-Themen 2
X Status Anzeige-durch Thread? Allgemeine Java-Themen 15
4 ich steige einfach nicht durch Allgemeine Java-Themen 5
P Thread Demonstrationr eist durch die Zeit Allgemeine Java-Themen 4
D erstellung einer seitenlangen xml durch ireport Allgemeine Java-Themen 3
R Jar-File vom Linux Desktop durch ancklicken starten? Allgemeine Java-Themen 5
M Java Programm durch Datei Öffnen Allgemeine Java-Themen 6
J IOException durch BufferedWriter.flush() ? Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben