PyAutoGUI使えたら、自動化に色々活かせそうだと思い、触ってみました。
ここでは、PyAutoGUIで画像認識した場所に、マウスポインターを移動させて、クリックするまでの方法を記載していきます。例として、Xを認識させて、アプリケーションを閉じるコードを紹介します。
Welcome to PyAutoGUI’s documentation! — PyAutoGUI documentation
各種ライブラリのインストール
pipコマンドを用いてPyAutoGUIをインストールします。
pip install pyautogui
PyAutoGUIで画像の読み込みや画像認識のオプションを使えるようにするためPillowとOpenCVをインストールします。
pip install Pillow
pip install opencv-python
画像認識した場所をクリックする
まず認識させたい画像を用意して、プロジェクト内におきます。今回はアプリケーションを閉じるコードを作成するため、以下画像を認識させます。
画像認識させるためには、pyautogui.locateCenterOnScreenを使います。第一引数に、認識させたい画像のパスを、引数confidenceに精度を指定します。confidenceの値を下げると、ピクセル数が異なる場合や似たような画像の場合でも認識してくれます。
画像が認識された場合は、locateCenterOnScreenは最初に見つけた画像中央のX 座標、Y 座標を返します。そのX座標とY座標をclick()に与えれば、マウスポインターが移動し左クリックが実行されます。
x, y = pyautogui.locateCenterOnScreen('test.png', confidence=0.5)
print(x, y)
# 1440 99
pyautogui.click(x, y)
複数のアプリケーションを閉じる
locateAllOnScreenを使うと、すべての画像の位置を取得することができます。locateAllOnScreenは、ジェネレーターとして返ってきます。また(left, top, width, height)を返します。
for xy in pyautogui.locateAllOnScreen('test.png', confidence=0.5):
print(xy)
# Box(left=1354, top=82, width=45, height=32)
# Box(left=1579, top=163, width=45, height=32)
この値から中央のX座標とY座標を算出するためには、center()を使います。
for xy in pyautogui.locateAllOnScreen('test.png', confidence=0.5):
print(pyautogui.center(xy))
# Point(x=1475, y=69)
# Point(x=1601, y=179)
この値をclick()の引数に与えれば、すべてのアプリケーションを閉じることができます。
for xy in pyautogui.locateAllOnScreen('test.png', confidence=0.5):
close_point = pyautogui.center(xy)
pyautogui.click(close_point.x, close_point.y)
コメント