Windowsの電卓アプリのGUIを例に説明します。この電卓アプリケーションが開いていて集中している場合、すべてのボタンを検出する方法を見つける必要があります。非侵入型のメソッドしか使用できないため、ボタンIDなどは問題外です。これは私を画像認識に導きます。あるいは、特定の画像ではなく、特定のパターンに従う一連の画像が必要なので、画像検出と言います。特定のボタン画像と画像認識を使用して、クリック、右クリック、dblクリックなどを行う方法を知っています[1]。逆にどうすればよいかわかりません。GUIをスキャンして、ボタンであるという要件を満たす領域を見つけます(長方形、テキスト/アイコン/グラフィックラベルなど)。より大きな取り組みは、長方形の形状を持たないアイテムを検出することです(たとえば、Windowsデスクトップ上のアイコン)。
私が必要としているものに最も近いのは、写真から顔を検出することです。[2] しかし、これを私の場合に適用する方法がわかりません。人間の顔の検出では、Haarカスケード生成で顔の何百枚もの写真を使用する必要があることがわかりました(10〜15個のボタンのスナップショットだけでこれを行う方法がわからない)。リンゴのような別の種類のオブジェクトを検出する必要がある場合は、多くの画像を使用して、そのオブジェクトのHaarカスケードを再度生成する必要があります。
あなたは、パターン検出のみを使用して、GUIでボタン、アイテムなどを検出しようとしたことがありますか?「これはアイコン/ボタンです」と言って、その領域をスナップショットで取得できるようにするだけです。
[1] PythonでSikuliXを使用して、特定のパターンでアクションを実行します。
[2] OpenCVおよびHaarカスケード(XML形式)を使用すると、これが簡単にできることがわかりました。Haarカスケードを作成するには、少しの忍耐とスキルが必要です。