![]() |
Bewegungen auf dem Bildschirm erkennen
Hallo,
ich suche eine Möglichkeit Objekte die sich auf dem Bildschirm bewegen zu erkennen und deren Position zu ermitteln. Leider gibt es keine Möglichkeit die Position direkt abzufragen und eine Art Hook wäre zu aufwendig. Hat vielleicht Jemand eine Idee wie man das am besten lösen könnte? MfG |
Re: Bewegungen auf dem Bildschirm erkennen
Was für Objekte sollen das denn sein?
Es gäbe natürlich die Möglichkeit, immer wieder Screenshots zu machen und dann zu vergleichen, aber naja :wink: ... |
Re: Bewegungen auf dem Bildschirm erkennen
Hallo!
Gruß, Dani |
Re: Bewegungen auf dem Bildschirm erkennen
es geht dabei um flash animation
und/oder einfache spiele (open gl) der einzigste vorteil ist wohl das es sich um keine fullscreen anwendungen handelt |
Re: Bewegungen auf dem Bildschirm erkennen
da müsstest du wirklcih mit bilderkennung anfangen. das geht aber los bei der erkennung einfach formen, der interpretation von kombinationen von formen zu objekten, und dann das erkennen von gleichen objekten, die sich vom letzten frame bewegt haben. und selbst wenn du es schaffst, ziehts n haufen performance.
|
Re: Bewegungen auf dem Bildschirm erkennen
naja es geht nur darum das vorhanden sein neuer
objekte zu erkennen bzw wohin sie sich bewegen ich denke ich werde einfach den hintergrund extrahieren und diesen mit einem screenshot abgleichen, hab nur gehofft es gäbe eine bessere lösung |
Re: Bewegungen auf dem Bildschirm erkennen
Was soll an der "Bilderkennung" so kompliziert sein?
Mach einfach in einem Intervall immer wieder Screenshots, "merke" dir immer das letzte Bild und vergleiche beide Bilder. Zum Vergleichen brauchst Du keine Bildanalyse durchzuführen. Lade einfach die Bilder in Streams und vergleiche diese ;) |
Re: Bewegungen auf dem Bildschirm erkennen
wénn man ein bild vergleicht, bekommt man erstmal raus, OB sich etwas verändert hat, und dann die Pixel, die sich verändert haben. da hast du aber noch NULL ahnung, was denn überhaupt auf dem bild geschehen ist, es ist nur eine gestaltlose masse von pixeln.
Daraus mussst du erstmal, z.b. anhand von farb- und helligkeitsähnlichkeiten, das bild in hintergrund und vordergrund aufteilen und dann aus dem vordergrund objekte zu extrahieren. wenn das vollständig autonom ablaufen soll, braucht man ausserdem noch fehlerkorrektur/fehlertoleranzen. |
Re: Bewegungen auf dem Bildschirm erkennen
Wenn es auch um OpenGL geht, wirst du mit der GDI für Screenshots nicht viel Freude haben. Das aber nur als Hinweis.
@FriFra: Schonmal probiert? Ich habe sowas schonmal in einer Software gesehen, die versucht anhand von "Schollenbildung" und Glasfarbe über eine Kamera im Glasofen die (Gas-)Verbrennung zu überwachen um den Schmelzvorgang zu optimieren. Trotz Framegrabber ist dies ziemlich aufwendig, weil rechenintensiv! |
Re: Bewegungen auf dem Bildschirm erkennen
Ich hab mal versucht einen Bot für dieses Flashgame zu schreiben:
http://69.93.231.198/albino_games004/squares2sheep( ![]() Ich muss sagen es war sauschwer. Ich wollte alles mit GetPixel(); lösen. Man muss ja nur Rot und schwarz von weiss unterscheiden. Nur dann hatte ich eine Masse an If-Abfragen, und die dann zu debuggen wenn was nicht richtig klappt ist wirklich zum verrücktwerden. Da muss man wohl mit einer ausgeklügekten Bilderkennung ran. Aber davon habe ich keine Ahnung, daher interessiert es mich auch. Hat jemand denn schonmal sowas gemacht ? |
Re: Bewegungen auf dem Bildschirm erkennen
nein, aber ich bin da auch sehr interessiert. du solltest halt erstmal zusehen, dass du das bild komplett in den speicher bekommst.
und dann eben nach diesen farbwerten prüfen. (am besten mit toleranzen) |
Re: Bewegungen auf dem Bildschirm erkennen
Zitat:
a.) sich die Objekte bewegen und neue hinzukommen können b.) du beide Möglichkeiten nicht unterscheiden kannst! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz