2016-06-03 36 views
1

Ich suche nach einem einfachen Weg in Python (PyAutoGUI), um alle Bilder eines bestimmten Typs auf dem Bildschirm zu finden, aber hier ist der Haken, jedes Bild hat einen anderen Verlauf/Farbton und ich möchte nicht den Screenshot von jedem Bild nehmen, um sie auf dem Bildschirm zu finden.Mit PyAutoGUI, um ein Bild auf dem Bildschirm unabhängig von der Farbe/Helligkeit zu finden

Hier ist der Bereich des Bildschirms die Bilder I enthält die Koordinaten zu bekommen versuchen:

Wie Sie jedes Quadrat hat eine einzigartige Farbe sehen können (der Kontrast).

Also ich möchte die Koordinate jedes Quadrats bekommen, die PyAutoGUI nur ein Bild scannen lassen. Gibt es irgendeine Möglichkeit, dass ich den Unterschied im Kontrast der Bilder ignorieren kann? Wie macht es Schwarz-Weiß-Modus oder so etwas.

Wie der Code funktioniert:

import pyautogui 
coordinates = pyautogui.locateAllOnScreen("image.png") # Returns list of coordinates of all images matching image.png 

Antwort

0

Ich würde versuchen, die folgenden:

pyautogui.locateOnScreen("image.png", grayscale=True) 

Welche Farbwerte ignoriert und compaire einfach den Kontrast von Werten. Dies hat den zusätzlichen Vorteil, dass es etwa 30% schneller verglichen wird, aber zu falsch positiven Ergebnissen führen kann.

+0

Bereits versucht, dass es nicht funktioniert. – Areeb

+0

Ahh Sieht man sich das Bild genauer an, sieht es so aus, dass sowohl die Farbe als auch der Kontrast pro Zelle verändert werden. Dies bedeutet, dass jede Zelle in allen Unterscheidungsarten außer dem Ort einzigartig ist. Wenn Sie genauere Angaben zu Ihrem Ziel machen könnten, könnte es bei Work-arounds noch mehr geben. –

+0

Ja, das wird höchstwahrscheinlich nicht funktionieren, da die Graustufenfarben immer noch unterschiedlich sind und PyAutoGUI pixelgenau funktioniert. –