Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Screen nach bestimmter Pixelanordnung (Bild) absuchen (https://www.delphipraxis.net/80569-screen-nach-bestimmter-pixelanordnung-bild-absuchen.html)

rhodan 11. Nov 2006 10:38


Screen nach bestimmter Pixelanordnung (Bild) absuchen
 
Moin leute :)

Ich hab schon mal ein wenig gegoogelt aber leider nix passendes gefunden.
Gibt es eine möglichkeit den screen nach einem bestimmten Bild (oder dessen genaue Pixelanordnung) abzusuchen und die maus darauf zu zentrieren?

So dass ich z.B ein kleines Firmenlogo in mein Programm laden kann und, sollte ich während ich surfe auf eine Seite kommen wo dieses angezeigt wird, meine maus darauf zentriert wird um mich aufmerksam zu machen?

die Maus bewege ich mit SetCursorPos (??,??), soviel hab ich herausgefunden.
aber wie lasse ich mein programm den screen nach dem kleinen bild welches ich vorher geladen habe absuchen, bzw. die maus auf diese coordinaten zentrieren?
Liege ich falsch wenn ich denke das sich mein Programm die genau Pixelfolge merken muss um danach suchen zu können?

die tutorials wie ich den Screen nach einer bestimmten Pixelfarbe absuchen kann hab ich gelesen, nur leider nichts über die suche nach bestimmten Pixelanordnungen, also bildern :-/

Wäre lieb wenn mir jemand nen tipp geben könnte wie ich weiter zu werke gehen kann.

netten gruß aus hamburg

Sunlight7 11. Nov 2006 14:03

Re: Screen nach bestimmter Pixelanordnung (Bild) absuchen
 
Hallo!

Du könntest Dir eine Procedure schreiben, die von dem Fensterinhalt Deines Browsers in Intervallen einen Schnappschuß macht und in diesem nach Deinem Bild suchen.

Nur ist dieses A sehr Rechenintensiv (ja nach Intervall) und B ohnehin schwer durchführbar, weil Du damit rechnen mußt, das
  • Durch die Komprimierung die Farbwerte sich verändern
  • Die Größe des Bildes geändert wurde
  • Mögl. Das Bild gedreht wurde
  • ...
Der direkte Pixelvergleich funktioniert nur, wenn beide Bilder exakt gleich sind, oder Du baust eine Toleranz (viel Glück!) ein.

Sorry für die aufbauenden Worte.

rhodan 11. Nov 2006 14:57

Re: Screen nach bestimmter Pixelanordnung (Bild) absuchen
 
hmmm :?

danke dir für deine antwort. könnte wirklich sehr rechenintensiv werden. würde denn eine einfachere variante funktionieren?
gibt es denn z.B keine möglichkeit, den screen nicht nur nach einer pixelfarbe abzusuchen, sondern nach einer pixelkonstelation?

das das programm z.B nicht nach einem roten Pixel sucht, sondern nach 4 roten untereinander angeordneten?

das könnte ich dann modifizieren, hab nur kaum ideen wie sowas zu realisieren wäre :gruebel:

lg

Sunlight7 11. Nov 2006 15:20

Re: Screen nach bestimmter Pixelanordnung (Bild) absuchen
 
Das Realisieren ist kein Problem, nur das richtige Ergebnis zu erhalten...
Wenn die Bilder absolut gleich sind, ist es ja mit Pixelvergleich möglich, aber sobald Du eine Toleranz einbauen musst, wird es eine Spielerei...

Hier im Forum suchenGetWindowDC bzw. Hier im Forum suchenGetDC, Hier im Forum suchenBitBlt, Hier im Forum suchenGetForegroundWindow und Hier im Forum suchenGetWindowRect sollte mal ausreichen, um ein Fenster vom Bildschirm zu "capturen".

Natürlich könntest Du auch den ganzen Bildschirm durchsuchen, aber dann dauerts u. U. länger.

Danach kannst Du nach einer Konstellation suchen, indem Du von 0 bis Width und 0 bis Height alle Pixel durchsuchst.
Ist ein Pixel "verdächtig", also in Deinem Fall ein roter, dann prüfst Du den Unterhalb, ist der auch verdächtigt, dann den nächsten, wenn nicht, dann vom letztem Ausgangspunkt aus weiter suchen.

inherited 11. Nov 2006 15:24

Re: Screen nach bestimmter Pixelanordnung (Bild) absuchen
 
Zitat:

Zitat von Sunlight7
[...]Danach kannst Du nach einer Konstellation suchen, indem Du von 0 bis Width und 0 bis Height alle Pixel durchsuchst.

Nimm lieber ScanLine, dass ist schneller.

Sunlight7 11. Nov 2006 16:14

Re: Screen nach bestimmter Pixelanordnung (Bild) absuchen
 
Und was erhält man bei ScanLine... alle (Sub)Pixel...

Es stand ja nix da, welche Methode man verwenden soll, also kann nix schneller sein :wink:

rhodan 12. Nov 2006 10:18

Re: Screen nach bestimmter Pixelanordnung (Bild) absuchen
 
vielen dank leutz :D
ich denke das wird mir weiterhelfen. hab leider erst nächste woche die möglichkeit es zu testen, werde aber berichten. werd mir die beschrieben befehle mal genauer ansehen :zwinker:

inherited 12. Nov 2006 10:36

Re: Screen nach bestimmter Pixelanordnung (Bild) absuchen
 
Zitat:

Zitat von Sunlight7
...indem Du von 0 bis Width und 0 bis Height alle Pixel durchsuchst.

Daraus schloss ich, dass du alle Pixel durchgehen willst, ohne ScanLine zu benutzen. Nichts für ungut.

Sunlight7 12. Nov 2006 17:24

Re: Screen nach bestimmter Pixelanordnung (Bild) absuchen
 
@rhodan: Du solltest das Bild per BitBlt auf eine Bitmap kopieren, die 24 Bit hat.
Dann kannst Du die Pixel am einfachsten vergleichen, dazu auch das QuellBitmap (falls Du eines verwendest auch auf 24 Bit setzen)
Aber dazu später mehr, wenn Du es erst mal auf nem Bitmap hast.

@inherited: Ist ja nicht schlimm, man kann ja seine Meinung frei äußern :-D

rhodan 18. Nov 2006 09:19

Re: Screen nach bestimmter Pixelanordnung (Bild) absuchen
 
Danke für die Tipps, hat funktioniert :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz