Hallo,
mein Name ist Clemens.
Ich würde gerne ein Script schreiben, welches aufgrund eines Bildes ein Szenario erkennt und dann ein von mir vorgegebene Befehle ausführt.
Leider habe ich nur wenig Ahnung von Bilder vergleichen oder änlichen.
Ich würde mich freuen, wenn mir einer Ansätze zeigen könnte.
Schon Mal danke im Voraus
Clemens
Reaktiven Script mit Bildauswertung
Da hast du dir ein heiß umkämpftes Gebiet aktueller Forschung und Entwicklung ausgesucht. Nix was so eben aus der lameng zu programmieren ist. Bei fast allen Bilderkennungs-Systemen gilt: sie sind auf das konkrete Problem optimiert, und eines Diskussion ist nur sinnvoll anhand konkreter Bilder. Was also ist dein Szenario, und wie sieht das aus?
Da kann ich dir Herrn Adrian Rosebrock und seine Webseite
https://www.pyimagesearch.com empfehlen.
Er bietet da jede Menge Wissen rund um Bilderkennung und Verarbeitung an.
Sehr viel kostenlos aber natürlich will er auch seine "paid courses" verkaufen.
In Kürze fängt wieder ein kostenloser Kurs an:
https://www.pyimagesearch.com/free-open ... sh-course/
https://www.pyimagesearch.com empfehlen.
Er bietet da jede Menge Wissen rund um Bilderkennung und Verarbeitung an.
Sehr viel kostenlos aber natürlich will er auch seine "paid courses" verkaufen.
In Kürze fängt wieder ein kostenloser Kurs an:
https://www.pyimagesearch.com/free-open ... sh-course/
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
@__deets__
Mein Szenario ist, das ein Körper zufällig in einem T förmigen Raum spawnt. Von diesem Ort soll der Körper dann jeweils zum Ende des T Stiels. Die Bilder sind jeweils ein Ausschnitt dieses Raums, und sollen aufgrund des genauen Randverlaufs (der überall anders ist) erkannt/zugeordnet werden. Von dort soll der Körper dann via Mausklicks zum Ziel Ort gelangen (die clicks geben nur zwischen Ziele an ).
@ThomasL
Danke. Ich werde mir Mal die Seite anschauen.
Mein Szenario ist, das ein Körper zufällig in einem T förmigen Raum spawnt. Von diesem Ort soll der Körper dann jeweils zum Ende des T Stiels. Die Bilder sind jeweils ein Ausschnitt dieses Raums, und sollen aufgrund des genauen Randverlaufs (der überall anders ist) erkannt/zugeordnet werden. Von dort soll der Körper dann via Mausklicks zum Ziel Ort gelangen (die clicks geben nur zwischen Ziele an ).
@ThomasL
Danke. Ich werde mir Mal die Seite anschauen.
- __blackjack__
- User
- Beiträge: 13919
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@MristerX: Einen externen Bildhoster wie beispielsweise Imgur verwenden und die Bilder dann hier mit dem [ img ]-Tag in den Beitrag einbinden. Bei Imgur gibt's praktischerweise auch eine Funktion wo man den passenden BB-Code zum einbinden des Bildes für phpBB-Foren in die Zwischenablage kopieren kann.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
— Scott Bellware
@__deets__
Hier sind 2 Bilder der Karte. Im 2. Bild habe ich markiert, welche das Spawn und welche die Ziel Area ist.
Da die führ mein Script relevanten Bilder alle nur kleine ausschnitte der Karte währen glaube ich das die erstmal reichen müssten.
Ich hatte mir gedacht, dass es vielleicht möglich ist die Karte nur als Kanten darzustellen
(https://www.pyimagesearch.com/2019/03/0 ... -learning/), um dann diese Linien zu vergleichen. Damit möchte ich dann sozusagen meine Figur in der Ebene finden (kleiner grüner Punkt). Um damit dann weiter arbeiten zu können.
Bild der ganzen Karte:
https://imgur.com/rMQFlKn
Bild der Karte mit den markierten Bereichen:
https://imgur.com/0dhcMPP
Beispiel Bild des Spawnpunktes in der Karte:
https://imgur.com/kUrmaa0
Wie ich mir mein Programm vorstellle:
1. Level starten
2. Bild des Spawns auf der Karte machen
3. Per Bild vergleich rausfinden wo ich bin
4. Über festgelegte Abläufe oder Peilpunkte das Level abschließen
@__Blackjack__ D
Danke für den Hinweis
Hier sind 2 Bilder der Karte. Im 2. Bild habe ich markiert, welche das Spawn und welche die Ziel Area ist.
Da die führ mein Script relevanten Bilder alle nur kleine ausschnitte der Karte währen glaube ich das die erstmal reichen müssten.
Ich hatte mir gedacht, dass es vielleicht möglich ist die Karte nur als Kanten darzustellen
(https://www.pyimagesearch.com/2019/03/0 ... -learning/), um dann diese Linien zu vergleichen. Damit möchte ich dann sozusagen meine Figur in der Ebene finden (kleiner grüner Punkt). Um damit dann weiter arbeiten zu können.
Bild der ganzen Karte:
https://imgur.com/rMQFlKn
Bild der Karte mit den markierten Bereichen:
https://imgur.com/0dhcMPP
Beispiel Bild des Spawnpunktes in der Karte:
https://imgur.com/kUrmaa0
Wie ich mir mein Programm vorstellle:
1. Level starten
2. Bild des Spawns auf der Karte machen
3. Per Bild vergleich rausfinden wo ich bin
4. Über festgelegte Abläufe oder Peilpunkte das Level abschließen
@__Blackjack__ D
Danke für den Hinweis
Na da ist ja noch aller möglicher anderer Kram wie Gräben und Brücken im Weg. Und Beleuchtungsvehältbisse die sich ändern.
Ich würde mit sowas beginnen: https://medium.com/nanonets/how-to-do-i ... 73cc5862ef
Adrian’s Kurs (den ich erworben habe) kennt auch noch eine Reihe anderer verfahren, wie farb- oder local binary pattern mit denen man versuchen kann, Bereiche zu klassifizieren. Dank präziser Grafiken kommst du natürlich für bestimmte Objekte auch mit Template matching weiter. Ggf reicht das, um mit Kanten und einem Ähnlichkeitsmass für “ist einfacher Boden” basierend auf zB Histogrammen, LBPs etc zu einer Segmentierung zu kommen.
So oder so - sehr viel Arbeit.
Ich würde mit sowas beginnen: https://medium.com/nanonets/how-to-do-i ... 73cc5862ef
Adrian’s Kurs (den ich erworben habe) kennt auch noch eine Reihe anderer verfahren, wie farb- oder local binary pattern mit denen man versuchen kann, Bereiche zu klassifizieren. Dank präziser Grafiken kommst du natürlich für bestimmte Objekte auch mit Template matching weiter. Ggf reicht das, um mit Kanten und einem Ähnlichkeitsmass für “ist einfacher Boden” basierend auf zB Histogrammen, LBPs etc zu einer Segmentierung zu kommen.
So oder so - sehr viel Arbeit.
Erstmal Danke __deets__. Die Gräben und Brücken sind mir eigentlich erstmal vollkommen egal. Die werden später warscheinlich noch der einfachere Teil sein.
Aber deine Anmerkungen klingen interesant. Ich werde sie mir gerne mal durch lesen.
Und was das Betrifft.:
Ich finde es auch richtig toll wie ihr mir helft mein Problem anzugehen.
Also nochmal Danke an alle die mir bis jetzt geholfen haben.
Aber deine Anmerkungen klingen interesant. Ich werde sie mir gerne mal durch lesen.
Und was das Betrifft.:
Ja das wird es. Aber das wusste ich schon vorher.
Ich finde es auch richtig toll wie ihr mir helft mein Problem anzugehen.
Also nochmal Danke an alle die mir bis jetzt geholfen haben.
Kurze Frage nochmal.
Ich möchte eine Screenshot machen:
#screenshot.py
def screenshot():
import pyscreenshot as ImageGrab
im=ImageGrab.grab(bbox=(1158,42,1276,160))
im.save('b.png')
Wenn ich ihn als einzelne Datei ausführe funktioniert er super.
Wenn ich das jetzt aber in einem Script benutze funktioniert es nicht.
Im Script sieht es ungefähr wie folgt aus:
from screenshot import screenshot
def script():
x=1
if x==1:
screenshot()
script()
Habe auch probiert script() in einem Thread auszuführen.
Klappt auch nicht
Falls mir einer helfen könnte wäre ich sehr dankbar.
Ich möchte eine Screenshot machen:
#screenshot.py
def screenshot():
import pyscreenshot as ImageGrab
im=ImageGrab.grab(bbox=(1158,42,1276,160))
im.save('b.png')
Wenn ich ihn als einzelne Datei ausführe funktioniert er super.
Wenn ich das jetzt aber in einem Script benutze funktioniert es nicht.
Im Script sieht es ungefähr wie folgt aus:
from screenshot import screenshot
def script():
x=1
if x==1:
screenshot()
script()
Habe auch probiert script() in einem Thread auszuführen.
Klappt auch nicht
Falls mir einer helfen könnte wäre ich sehr dankbar.
screenshot.py:
def screenshot():
import pyscreenshot as ImageGrab
import time
time.sleep(1)
im=ImageGrab.grab(bbox=(1158,42,1276,160))
im.save('b.png')
main.py
from screenshot import screenshot
def vergleich():
import (viele hier irrelevante module)
while 1:
while start==1
# start is eine variable um das Programm durch Tasten kürzel zu starten und zu beenden
screenshot()
(und noch viel script hinterher)
Thread(target=vergleich).start()
def screenshot():
import pyscreenshot as ImageGrab
import time
time.sleep(1)
im=ImageGrab.grab(bbox=(1158,42,1276,160))
im.save('b.png')
main.py
from screenshot import screenshot
def vergleich():
import (viele hier irrelevante module)
while 1:
while start==1
# start is eine variable um das Programm durch Tasten kürzel zu starten und zu beenden
screenshot()
(und noch viel script hinterher)
Thread(target=vergleich).start()
Gut, das du selbst entscheiden kannst, was relevant ist und was nicht. Dann kannst du ja auch selbst rausfinden, was dein Problem ist.
Falls dem nicht so ist, dann wäre es - ganz vielleicht - eine Idee, denjenigen hier, von deren Erfahrung du profitieren möchtest, auch zuzugestehen, das ihre Wünsche einen Grund haben. Du bist beileibe nicht der erste, der beschreibt, was er glaubt zu tun, aber dann in Wirklichkeit was anderes macht.
Falls dem nicht so ist, dann wäre es - ganz vielleicht - eine Idee, denjenigen hier, von deren Erfahrung du profitieren möchtest, auch zuzugestehen, das ihre Wünsche einen Grund haben. Du bist beileibe nicht der erste, der beschreibt, was er glaubt zu tun, aber dann in Wirklichkeit was anderes macht.