AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi Pixelerkennung, Kreativität gesucht die mir fehlt!
Thema durchsuchen
Ansicht
Themen-Optionen

Pixelerkennung, Kreativität gesucht die mir fehlt!

Ein Thema von Pixel · begonnen am 23. Aug 2016 · letzter Beitrag vom 27. Aug 2016
Antwort Antwort
Pixel

Registriert seit: 23. Aug 2016
26 Beiträge
 
#1

Pixelerkennung, Kreativität gesucht die mir fehlt!

  Alt 23. Aug 2016, 20:12
Hallo erstmal,

bin hier neu (wie man sieht)!

Ich stelle schon mal gleich klar: Ich hab mich mit dem folgenden Problem c.a. 1 Woche auseinandergesetzt und nichts gutes auf die Beine gestellt. Es mangelt mir eindeutig an kognitiven Fähigkeiten und Ihr habt nun die Mission das zu kompensieren (weil Ihr so nett seid).

Kurz: Es geht darum in den folgenden Bildern via Pixelerkennung den Kopf zu finden. Bevor ich darauf eingehe was ich bisher getan habe könnt Ihr euch selbst ein Bild davon machen wie das ganze aussieht. Achtet bei den Bildern auf die Roten Linien die die Objekte umrunden. Bilder im Anhang.

Momentan funktioniert meine Pixelerkennung nur bei 1D). Die HP-bar hat einen immer gleichen Rot-ton:

Rot : >= $FA
Grün: = $00
Blau: = $13

Also der Screenshot der bei 1D zusehen ist wird dann mit folgendem Code durchlaufen:

Delphi-Quellcode:
procedure findPixelPosition;
var
  x,y : Integer;
  Pixels2 : PRGBTripleArray;
begin
  found := false;
  for y := 0 to screenshot.Height-10 do
  begin
    Pixels := screenshot.ScanLine[y];

    for x := 0 to screenshot.Width-10 do
    begin
      if (Pixels[x].rgbtBlue = $13) and (Pixels[x].rgbtGreen = $00) and (Pixels[x].rgbtRed >= $FA) then
      begin
        Pixels2 := screenshot.ScanLine[y+1];
        if (Pixels2[x].rgbtBlue = $13) and (Pixels[x].rgbtGreen = $00) and (Pixels[x].rgbtRed >= $FA) then
        begin
          Pixels2 := screenshot.ScanLine[y+2];
          if (Pixels2[x].rgbtBlue = $13) and (Pixels[x].rgbtGreen = $00) and (Pixels[x].rgbtRed >= $FA) then
          begin
            found := true;
            AimPixelX := ScanL + x;
            AimPixelY := ScanT + y;
            Exit;
          end;
        end;
      end;
    end;
  end;
end;
Also, wenn 3 untereinanderfolgende Pixel diese Farbe haben, dann ist die linke Seite der HP-bar gefunden, denn wir fangen ja an von Links nach Rechts zu suchen.

Bei einer Entfernung von 2-8 Meter kann man das statische Offset HP_Bar_Links_X + 41 und HP_Bar_Links_Y + 63 verwenden um vom gefunden Pixel ca zur Mitte des Kopfes zu gelangen.

Problem: Bei größerer Entfernung ist das Offset falsch. Die Objekte sowohl auch die HP-Bar skalieren. Demnach wird aus Offset HP_Bar_Links_X + 41 und HP_Bar_Links_Y + 63 bei einer Entfernung von 30 Metern z.B. Offset HP_Bar_Links_X + 30 und HP_Bar_Links_Y + 43

Ich habe keine Möglichkeit gefunden herauszufinden wie weit ich von einem Objekt entfernt bin, demnach wollte ich von der HP-Bar erkennung mich lösen und anstelle dessen den Kopf irgendwie anders erkennen. Ich habe mal bei 1A, 1B und 1C paar Objekte screenshotted und mit verschiedenem Hintergrund.

Ich müsste die Breite der HP-Bar (die auch mit der Distanz sich verändert) feststellen können und davon die Mitte nehmen um zumindest mal die X-Achse zu erhalten.

Dann könnte ich Y-Achse nach dem nächsten Rot-Pixel durchsuchen (unterhalb des Namens).

Aber die HP-bar hat nicht immer die gleiche Farbe und wird ja auch durchsichtig wenn die HP verloren gehen...


Ich hoffe die Problemstellung ist klar genug dass man sich darüber Gedanken machen kann.


Danke im voraus!
Angehängte Grafiken
Dateityp: png 1a.png (141,8 KB, 81x aufgerufen)
Dateityp: png a2.png (278,8 KB, 71x aufgerufen)
Dateityp: png a3.png (133,1 KB, 67x aufgerufen)
Dateityp: png a4.png (71,9 KB, 73x aufgerufen)

Geändert von Pixel (23. Aug 2016 um 22:30 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Pixelerkennung, Kreativität gesucht die mir fehlt!

  Alt 23. Aug 2016, 21:37
Ich kann zwar leider nichts zum Problem beitragen bzw. dir eine Hilfestellung geben, aber dir einen Tipp für deine zukünftigen (bzw. auch diesen) Beitrag geben.

Du kannst Bilder direkt hier im Forum anhängen und sogar direkt im Text anzeigen lassen. Dazu gibt es unter dem Beitragsfenster einen Button "Anhänge verwalten". Dort kannst du dann deine Bilder hochladen. Über die Büroklammer im Editor kannst du die Bilder dann im Text mit anzeigen lassen.

Vorteil hierbei ist, dass man nicht auf externe Seiten herumsurfen muss. Sowas wird nicht gerne gemacht. Ich persönlich mag das auch nicht so. Und dazu kommt, dass die Bilder bei den meisten Hostern irgendwann gelöscht werden. Hier im Forum bleiben diese Daten aber erhalten solange es diesen Fred hier gibt.

Deinen Beitrag kannst du 24h nach Erstellung bearbeiten. Sei doch bitte so nett und hänge die Daten hier ein.

PS: Noch ein Herzliches Willkommen in der DP!!!
  Mit Zitat antworten Zitat
Pixel

Registriert seit: 23. Aug 2016
26 Beiträge
 
#3

AW: Pixelerkennung, Kreativität gesucht die mir fehlt!

  Alt 23. Aug 2016, 22:07
Ich kann zwar leider nichts zum Problem beitragen bzw. dir eine Hilfestellung geben, aber dir einen Tipp für deine zukünftigen (bzw. auch diesen) Beitrag geben.

Du kannst Bilder direkt hier im Forum anhängen und sogar direkt im Text anzeigen lassen. Dazu gibt es unter dem Beitragsfenster einen Button "Anhänge verwalten". Dort kannst du dann deine Bilder hochladen. Über die Büroklammer im Editor kannst du die Bilder dann im Text mit anzeigen lassen.

Vorteil hierbei ist, dass man nicht auf externe Seiten herumsurfen muss. Sowas wird nicht gerne gemacht. Ich persönlich mag das auch nicht so. Und dazu kommt, dass die Bilder bei den meisten Hostern irgendwann gelöscht werden. Hier im Forum bleiben diese Daten aber erhalten solange es diesen Fred hier gibt.

Deinen Beitrag kannst du 24h nach Erstellung bearbeiten. Sei doch bitte so nett und hänge die Daten hier ein.

PS: Noch ein Herzliches Willkommen in der DP!!!
Aber gerne
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Pixelerkennung, Kreativität gesucht die mir fehlt!

  Alt 23. Aug 2016, 22:09
Das ist ein interessantes Problem, aber ich werde dir sicher nicht helfen einen Aimbot für Overwatch zu schreiben Das ist gegen die EULA und du kannst dir sicher sein, dass du dir so einen lebenslangen Bann einhandelst (gut so!).
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Pixel

Registriert seit: 23. Aug 2016
26 Beiträge
 
#5

AW: Pixelerkennung, Kreativität gesucht die mir fehlt!

  Alt 23. Aug 2016, 22:26
Das ist ein interessantes Problem, aber ich werde dir sicher nicht helfen einen Aimbot für Overwatch zu schreiben Das ist gegen die EULA und du kannst dir sicher sein, dass du dir so einen lebenslangen Bann einhandelst (gut so!).
Wenn man's genau nimmt, steht mir völlig frei screenshots zu machen und Bilderkennung durchzuführen.
Das verstößt in keiner Form gegen Blizzards EULA und kann davon mal abgesehen auch nicht erkannt werden. Sonst sind bald alle streamer gebannt

Verstoßen würde ich erst, wenn ich Funktionen wie mouse_event() nutze um den cursor virtuell zu bewegen oder anders gesagt: Das Game manipuliere/Bewegungen automatisiere. Auch hier wird es schwer das zu erkennen da mouse_event() direkt in den mouse stream sendet. Man müsste schon NtUserSendInput auf Ring0 hooken um festzustellen ob der input physikalisch oder virtuell war.

Durch heuristische erkennung wirds auch ein Katz und Mausspiel. Klar, man könnte die inputs per second der Maus (die Normal z.B. 1000 ist) nehmen und dann Abweichungen messen die während des Schießens passieren aber naja - ein anderes interessantes Thema.

Ganz ehrlich wie schon gesagt: Mir geht's hier nur ums erkennen "proof-of-concept" ohne mit dem Spiel direkt zu interagieren/modifikationen durchzuführen. Das was ich hier mache verstößt nicht gegen deren EULA und sollte hier somit auch tolleriert werden!

Geändert von Pixel (23. Aug 2016 um 22:35 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.687 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: Pixelerkennung, Kreativität gesucht die mir fehlt!

  Alt 24. Aug 2016, 12:43
Das Problem ist, dass der Weg vom Proof-of-Concept hin zum funktionsfähigen Aimbot dann fast nur noch eine Formalität ist. Und mal so unter uns: Warum den Aufwand betreiben, um es nachher als "heh, is ja interessant" in die Tonne zu kloppen?

Ich hatte früher mal einen "Fight-Advisor" für WoW geschrieben. Bestand aus einem (völlig zulässigen) In-Game Addon, dass mir Buffs und Debuffs sowie diverse Cooldowns in farbige Felder codiert am Bildrand angezeigt hat. Mit einem externen Programm habe ich dann kontinuierlich Screenshots gemacht, und eine Makro-Taste meiner Tastatur mit den jeweils optimalen Spell-Shortcuts belegt. Dadurch hatte ich ein One-Button-Moonkin, dass immer weit oben im Damage-Meter war bei unseren Raids. (Zu Burnig Crusade Zeiten wohlgemerkt, als Eulen noch als nutzlos galten. In Craftable und Karazhan Gear, während der Rest seit Wochen im Black Temple gefarmt hat. Genug generded.)
Ergo:
- Ingame Addon, dass nur die von Blizzard freigegebenen APIs benutzt hat, wie es die EULA vorschreibt
- Screengrabber, der theoretisch auch ein einfache Recording-Tool hätte sein können
- Echte Tastaturinputs durch meine menschlichen Finger
Ergebnins: 72h Ban nach ein paar Monaten der Nutzung. Obwohl ich "nichts falsch gemacht habe" (ha...ha...). Bedenke auch immer, dass ein Spielebetreiber auf seinen Servern Hausrecht genießt. Er hat das Recht dich jederzeit für wie lange auch immer auszuschließen, und müsste dafür nichtmals einen Grund angeben - geschweige denn sich an seine EULA halten. Sehr dünnes Eis.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Pixelerkennung, Kreativität gesucht die mir fehlt!

  Alt 24. Aug 2016, 12:57
aus Sicht der Bildverarbeitung wäre mein Ansatz :


über NCC / FastNCC kann ich Bilder in anderen Bildern erkennen :


https://sourceforge.net/projects/nccfastncc/


dh. BMP des ersten Kopfes als Vorlage Speichern und dann innerhalb Deines roten Rahmen suchen, bei > 70 % NCC Wert hast du vermutlich dann schon einen Treffer

Geändert von bernhard_LA (24. Aug 2016 um 13:14 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 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 by Thomas Breitkreuz