Wie kann ich Schaltflächen in einer GUI einer App mit Mustererkennung mit Python erkennen?

  • Ich werde am Beispiel die GUI der Rechner-App in Windows erläutern. Da diese Rechneranwendung offen und fokussiert ist, muss ich einen Weg finden, alle Schaltflächen zu erkennen. Ich kann nur nicht aufdringliche Methoden verwenden, so dass Dinge wie die Schaltfläche-ID nicht in Frage kommen. Dies führt mich zur Bilderkennung. Oder besser die Bilderkennung, weil ich kein bestimmtes Bild will, sondern Bilder, die einem bestimmten Muster folgen. Ich weiß, wie ich mit einem bestimmten Schaltflächenbild und einer Bilderkennung auf / dbl-click / etc klicken / rechtsklicken kann [1]. Ich weiß nicht, wie ich es andersherum machen kann: Scannen Sie die GUI und finden Sie die Bereiche, die den Anforderungen eines Buttons entsprechen (Rechteck, Text / Symbol / Grafik usw.). Ein größeres Problem wäre das Erkennen von Objekten, die nicht die Rechteckform haben (z. B. Symbole auf einem Windows-Desktop).

    Das, was ich brauche, ist das Erkennen von Gesichtern in einem Bild [2] Aber ich weiß nicht, wie ich das in meinem Fall anwenden soll. Für die Erkennung des menschlichen Gesichts habe ich gesehen, dass Hunderte von Bildern des Gesichts in der Generation der Haar-Kaskaden verwendet werden müssen (ich weiß nicht, wie ich dies mit nur 10-15 Tasten-Snapshots machen würde). Wenn ein anderes Objekt wie ein Apfel erkannt werden muss, müssen Sie mit vielen Bildern erneut eine Haar-Kaskade für dieses Objekt erstellen.

    Hat einer von Ihnen jemals versucht, dies zu erkennen Schaltflächen, Elemente oder was auch immer in einer GUI, die nur Mustererkennung verwendet? Ich brauche nur etwas, um mir zu sagen "dies ist ein Symbol / eine Schaltfläche", damit ich diese Region in einem Schnappschuss erfassen kann.

    [1] Ich benutze SikuliX mit Python, um Aktionen an bestimmten Mustern auszuführen.

    [2] Ich habe gesehen, dass dies mit OpenCV und Haar-Kaskaden (im XML-Format) problemlos möglich ist. Das Erstellen der Haar-Kakaden erfordert etwas Geduld und Fähigkeiten.

    26 April 2012
    num1
1 answer
  • Schauen Sie sich zuerst die Quadrate an .py Beispiel von OpenCV. Es sollte eine ganze Reihe von Tastentypen mit einigen Optimierungen behandeln.

    Hier ist die Ausgabe (mit einigen Optimierungen) für Ihr Taschenrechner-Beispiel: Wie kann ich Schaltflächen in einer GUI einer App mit Mustererkennung mit Python erkennen?

    Ich habe folgende Änderungen an der Anwendung "Quadrate" vorgenommen:

    Ändern Sie diesen Code (beginnend in Zeile 84):

     if(result.total == 4 and 
       abs(cv.ContourArea(result)) > 1000 and 
       cv.CheckContourConvexity(result)):
     

    Dazu:

     if(result.total == 4 and 
       abs(cv.ContourArea(result)) < 1300 and 
       abs(cv.ContourArea(result)) > 300 and
       cv.CheckContourConvexity(result)):
     

    Da Sie sich auch keine Gedanken über Skalierungs- oder Rotationsschwankungen machen müssen, besuchen Sie matchTemplate . Das entsprechende Tutorial (in C ++) ist außerdem hier .

    Sehen Sie meine anderen Antwort für ein anderes Beispiel, wie der Vorlagenabgleich funktioniert. Möglicherweise finden Sie diese Antwort für das Erkennen der Top-X-Übereinstimmungen mit matchTemplate. .

    Ich hoffe, das hilft!

    15 June 2018
    Scott Ivey