おすすめ教材
PyAutoGUI

PyAutoGUIで画像を認識させてクリックする

PyAutoGUIで面倒ごとを自動化しよう

今回はPyAutoGUIを使って画像を認識させる処理をみていきます。

こんな感じ。

 

画像の認識

PyAutoGUIでは画像の検索も簡単に実施することができます。
まずは読み込みたい画像を準備します。今回はChromeブラウザのアイコンを用意しました。

以下のコードを見てください。

x,y = pyautogui.locateCenterOnScreen("./chrome.png")

これは先ほど用意したChromeアイコンがデスクトップ上に存在するか確認し、存在すれば、その真ん中の座標を取得します

※注意点としてはlocateCenterOnScreenは一度デスクトップ画面のスクリーンショットを取得し、その中から対象の画像を探しにいきます

したがって、実行時は必ず対象のアイコンが見えている状態で実行する必要があります。他のウィンドウ等で隠れていると座標を取得することができません。座標の取得に失敗した場合はNoneが返ります。

さらなる注意点、いや謎

本記事を最初に作成時はiMacで検証していたのですが現在はMacbookを使用しています。本記事をちゃんと書き直そうと思い、もう一度、検証してみたのですが何故かうまくいかず。

動いていないわけではないのですが返してくる座標がまたっく違いました。

何回か検証していると返ってくる座標は本来の座標と比較してx,y共に2倍であることがわかりました。

スクリーンショットからの座標取得がどうやらおかしくなっているみたいです。(mac側に起因している?)

単純な座標自体は問題なく正しい値が取れます。

結果としてMacBookの場合は取得した座標を1/2してやれば本来の座標が取得できます。。。

座標確認の仕方は以下の記事で紹介してます

PyAutoGUIでデスクトップの座標取得PyAutoGUIで面倒ごとを自動化しよう 今回はPyAutoGUIを使用して画面上の特定位置の座標を取得する方法を紹介します。 ...

ソースコード

import pyautogui as gui

try:
    x,y = gui.locateCenterOnScreen("./chrome.png")
    gui.doubleClick(x,y)
except Exception as ex:
    print("対象が見つかりませんでした。")
    print(ex)

ソースコード (MacBook用。。)

import pyautogui as gui

try:
    x,y = gui.locateCenterOnScreen("./chrome.png")
    gui.doubleClick(x/2,y/2)
except Exception as ex:
    print("対象が見つかりませんでした。")
    print(ex)

Next Challenge!!

次はキーボードの自動入力を紹介しますので合わせてご確認ください!

【自動入力】PyAutoGUIでキーボード操作PyAutoGUIで面倒ごとを自動化しよう 今回はPyAutoGUIを使ってキーボード入力を自動で行うプログラムを紹介していきます。 ...