ImageSearch speed

Coopy

Neues Mitglied
Hallo,

In einen Windowsprogram namens Autohotkey gibt es eine Funktion welches den Bildschirm nach einen Bild (z.B einen Button) absucht (die ImageSearch Funktion).

Was mich interessiert: Wie haben die Entwickler das gemacht und kann man etwas ähnlich schnelles in Java umsetzen?
Ich habe versucht durch awt.robot einzelne Pixel auf den Bildschirm zu erkennen (über die Farbe), habe aber schnell gemerkt, dass das viel zu lange dauert :/.
 

Marco13

Top Contributor
Den Screenshot machen und durch das BufferedImage laufen sollte nicht so lange dauern. Sofern man nicht in der innersten Schleife das getRGB in ein Color-Objekt umwandelt oder so...
 

Coopy

Neues Mitglied
Danke:)
Das hat mir weitergeholfen. Allerdings brauche ich immer noch 7 Sekunden um den ganzen Bildschirm abzusuchen (er findet es aber);(.
 

Ark

Top Contributor
Vielleicht den Screenshot zunächst nur grob abtasten, um eine erste Schätzung für die Position des Buttons zu bekommen, und erst dann an den potentiellen Stellen genauer hinsehen? Eventuell geht auch eine zweidimensionale Variante von Boyer-Moore, falls das Problem das hergibt.

(Vielleicht hilft eine DFT oder ähnliche Herangehensweisen, aber da kenne ich mich noch nicht gut genug aus und kann deshalb noch nicht viel dazu sagen.)

EDIT: Ach, ja, du kannst auch viel Zeit sparen, indem du nicht [c]getRGB()[/c] aufrufst, sondern direkt auf den darunterliegenden Puffer zugreifst. Allerdings ist dieses Vorgehen problematisch, da der genaue Typ des Puffers nicht in [c]Robot.createScreenCapture()[/c] festgelegt ist. (Das wird z.B. dann ein Problem bei verschiedenen Farbtiefen, da müsste man dann je nachdem anders zugreifen.)

Ark
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D scheduledAtFixedRate speed ändern Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben