Hallo,
versuche gerade etwas, bei dem ich einen Screenshot mache und dabei mein Prog suchen lassen will, ob auf dem Bild ein anders ist. Klinkt kompliziert, ich versuch es besser zu erklären was ich vorhabe:
- Bild mit z.B. einem Icon
- prog macht einen screenshot und soll nun darauf nach dem Icon suchen, und mir dann die Koordinate auf dem Bild geben.
Habe schon ein bisschen gesucht und nichts dazu unter google gefunden und weiß nicht wirklich, wie ich dies umsetzten kann. Hat von euch jemand soetwas gemacht oder hat eine gute Idee wie man das umsetzten könnte? Ich würde mich über Anregungen sehr freuen
Gruß waki
PIL Bild in einem anderen finden
Hallo.
Das hängt natürlich alles davon ab, wie komplex die Suche ist:
- ist das gesuchte Bild exakt in dem Suchbild vorhanden
- gibt es Verdeckungen
- wie genau soll die Suche sein
- wie schnell soll es gehen
- müssen Rotationen betrachtet werden
- ist das Bild immer gleich skaliert
In Abhängigkeit von den genannten Eigenschaften, kann man sich dann mehrere Ansätze aussuchen. Ansonsten gilt natürlich: OpenCV hat da bestimmt schon eine fertige Lösung.
Sebastian
Das hängt natürlich alles davon ab, wie komplex die Suche ist:
- ist das gesuchte Bild exakt in dem Suchbild vorhanden
- gibt es Verdeckungen
- wie genau soll die Suche sein
- wie schnell soll es gehen
- müssen Rotationen betrachtet werden
- ist das Bild immer gleich skaliert
In Abhängigkeit von den genannten Eigenschaften, kann man sich dann mehrere Ansätze aussuchen. Ansonsten gilt natürlich: OpenCV hat da bestimmt schon eine fertige Lösung.
Sebastian
Das Leben ist wie ein Tennisball.
http://opencv.itseez.com/doc/tutorials/ ... nn-matcher
Aber CV ist starker Tobak, wie ich immer wieder bemerken muss...
Aber CV ist starker Tobak, wie ich immer wieder bemerken muss...
Bild ist exakt vorhanden, keine Verdeckungen, die suche sollte mir eben einen Koordinaten zurück geben, am besten einen in der Mitte, sollte relativ schnell gehen, Rotation ist nicht vorhanden und das Ausgangsbild ist immer gleich skaliert, aber das Suchbild kann unterschiedliche Größen haben.
Alle Fragen hoffentlich beantwortet
Werde mir mal OpenCV anschauen, hätten ihr einen Lösungsweg mit PIL? Wäre mir lieber....
Alle Fragen hoffentlich beantwortet
Werde mir mal OpenCV anschauen, hätten ihr einen Lösungsweg mit PIL? Wäre mir lieber....
Dann versuche es doch einfach mal mit Brute-Force. Probiere einfach jedes Pixel aus, ob dort das gesuchte Bild beginnt. Der größte Teil der Test wird wahrscheinlich bereits nach einem Pixel abbrechen und du kannst mit dem nächsten Position fortfahren. Ist in wenigen Zeilen zu implementieren und reich vielleicht schon aus.
Sebastian
Sebastian
Das Leben ist wie ein Tennisball.
Kreuzkorrelation im reziproken Raum mit anschließender Suche nach dem Maximum? Das geht fix.
Habe ein Problem: Wenn ich mit Photoshop aus dem Screenshot ein kleines Bild auschneide und mit dne exakt gleichen einstellungen speichere, veränder sich beim neuen nach dem speichern immer einige pixel Ich schau mal ob ichs mit python hinbekomme...
Zuletzt geändert von waki am Freitag 30. September 2011, 16:29, insgesamt 1-mal geändert.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Sobald Bilder durch verlustbehaftete Kompression "verfälscht" werden, kann so ein nicht tolleranter Algo nicht mehr funzen! Für das menschliche Auge mögen Deine Beispielbilder ja gleich aussehen, in Wirklichkeit aber kann es doch durchaus sein, dass sich die Farbwerte unterscheiden!
Deinen Ansatz musst Du also mit Formaten testen, die keine solche Kompression beinhalten! PNG kann das z.B., oder natürlich auch andere. Bei JPEG bin ich mir nicht sicher, ob sich die Kompression zu 100% ausschalten lässt.
Generell hat Dein Ansatz noch das Problem, dass er für Deine Voraussetzungen nicht klappen kann, denn die unterschiedlichen Größen zwischen Muster und Suchbild kompensierst Du so natürlich nicht.
Deinen Ansatz musst Du also mit Formaten testen, die keine solche Kompression beinhalten! PNG kann das z.B., oder natürlich auch andere. Bei JPEG bin ich mir nicht sicher, ob sich die Kompression zu 100% ausschalten lässt.
Generell hat Dein Ansatz noch das Problem, dass er für Deine Voraussetzungen nicht klappen kann, denn die unterschiedlichen Größen zwischen Muster und Suchbild kompensierst Du so natürlich nicht.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert