Webcam -> Laserpointer auf weißer, Pfad nachzeichnen.
Übersicht

timmeTheOnlyBetreff: Webcam -> Laserpointer auf weißer, Pfad nachzeichnen. |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi, ich habe versucht den Titel so gut wie möglich zu gestalten. Ist mir denk ich nicht so gelungen.
Hier nochmal: Ich will ein Programm schreiben, welches meine Webcam anspricht (danke Panno), den Punkt eines roten Laserpointers auf einer weißen Wand erkennt und eine Spur zeichnet, wo er schon überall war (später vielleicht auch mit Motoren darauf ausrichten). Mein Problem: Wie bekomm ich raus, wo der Punkt gerade steckt. Er wird von der Webcam wegen der enormen Helligkeit in der Mitte weiß gezeichnet. MfG und Danke im Vorraus, timme |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wenn du ihn nicht siehst, garnicht ...
da musst du erst an den Contrastsettings der CAM und der Beleuchtung der wand arbeiten. danach kannst du via farbvergleich das zentrum des "roten bereichs" feststellen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
timmeTheOnly |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke erstmal.
Gibt es zum Farbvergleich Tutorials oder Anleitungen die du kennen würdest? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
brauchst du eigentlich nicht.
einfach die farben auslesen,wenn du einen "überschuss" an rot feststellst das merken und in eine liste eintragen inkl koordinate und am schluss den "schwerpunkt" der koordinaten berechnen. überschuss an rot heisst wenn rot um einiges stärker ist als grün und blau -> es also nicht mehr ein grauton an der wand sein kann. das kann man natürlich noch sehr viel komplizierter und mächtiger machen, macht aber bei einem punkt den du suchst nicht wirklich sinn. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
timmeTheOnly |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke dir, ich werd es erstmal ausprobieren.
[edit] Zweites Problem, ich komme mit der DLL nicht zurecht. Wie bewege ich die neue DLL (Methyl leider weg) dazu, nichts anzuzeigen, sondern nur in eine Bank zu speichern? |
||
timmeTheOnlyBetreff: Fortschritte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hiho,
ich bins wieder. Hab die DLL jetzt zum laufen gebracht und mir überlegt (auch weil es sowas wie ein Pathtracking-Programm schon gab), ein Spiel damit zu programmieren. So läuft es ab: Webcam auf ne Art Stativ Auf Wand ausrichten Kleine Markierung an die Wand Mit Tool kalibrieren Zimmer verdunkeln Ab einem gewissen Abstand des Punktes werden die Richtungsvariablen aktiviert. Hier mal ein Bild zum aufbau: ![]() Und eins zur Verwendung der (Lein-)Wand ![]() |
||
![]() |
The Shark |
![]() Antworten mit Zitat ![]() |
---|---|---|
Damit könnte man doch auch so ein Spiel realisieren, in dem man mit ner "Waffe" mit einem Laserpointer drauf auf Gegner zielt, oder? | ||
timmeTheOnly |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nicht ganz, du könntest mit dem Laserpointer zielen.
Ich mach gleich mal ein Release. |
||
![]() |
The Shark |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das habe ich ja gemeint...
Da gabs doch früher die automaten, wo man auf den bildschirm "geballert hat" |
||
timmeTheOnly |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Auf den Bildschirm geht leider nicht, das wäre dann eine zu große Rückspiegelung des Lasers. Du musst dir eine extra Stück Wand oder eine Leinwand einrichten. Schau dir doch einfach mal die Demo an die ich gerade uploade.
DEMO Wie ihr euere Leinwand einrichten müsst seht ihr auf den Bildern zwei Post meinerseits vorher. |
||
![]() |
Vertex |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau dir mal Digitale Bildverarbeitung an!
Folgende Idee aber: - Bild auf den Rotkanal reduzieren - alle Pixel unter einen Schwellenwert auf schwarz setzen - alle horizontalen Linien aufsuchen - alle vertikalen Linien aufsuchen - schneidende horizontale und vertikale Linien zu einem Objekt gruppieren - Größe (Anzahl der Pixel, sprich Summe aller Linien) der Objekte bestimmen - Mittelpunkt des größten Objekts errechnen So wird der größte zusammenhängende Pixelhaufen gefunden und zum Teil störendes Grundrauschen ausgeschlossen. Der Mittelpunkt ist dann dein Laserpunkt. mfg olli |
||
vertex.dreamfall.at | GitHub |
timmeTheOnly |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, werds mir nacher ansehen. | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
rotkanal reduzieren bringt hier wenig, der schwellenwert wohl auch nicht.
Weisse wand -> rotkanal > 200 schatten an der wand von den lichtquellen, falls unebene wand -> rotkanal < 100 Darum auch der "physikalischen" Ansatz, dass man einfach die Rotkanal Abweichung (von R, B) nimmt und die Koordinate des Pixels damit gewichtet und so als Type zb in eine Liste einträgt und die gewichte aufsummiert. Am Schluss dann einfach alle Listeneinträge summieren wobei man das gewicht durch das summierte gesamtgewicht teilt. Damit ergibt sich auf natürliche Weise das gewichtete Zentrum am Ende der Berechnung. Und zwar unabhängig von schwellenwerten und damit von der absoluten Helligkeit der Wand und der Qualität der Webcam (was ja ein zweites Problem ist wenn der Kontrast einfach nur grottig ist) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
PlasmaBetreff: hmm |
![]() Antworten mit Zitat ![]() |
---|---|---|
um dingen wie pixelfehler die durch rauschen des sensors (cmos) entstehen zu entgehen sag ich nur
eye toy camera !!! kaufen und anschließen .es ist die beste die ich je sah .... ![]() Für mein ei-toy (pc) Spiel welches nie rauskam (genau deswegen) hab ich extra ne logitech gekauft , ich dussel ! naja was solls |
||
timmeTheOnly |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab ne Eye Toy hehe ^^. Aber leider nur die SCEH-0004, die kleine silberne. Gaaanz schwer die Treiber zu bekommen. Naja, bei mir hats heut beim ersten Versuch geklappt. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group