【最短5分】PyAutoGUIのlocateOnScreenで画像クリック

【最短5分】PyAutoGUIのlocateOnScreenで画像クリック

 

★悩み★
・PyAutoGUIで画面内に指定画像の存在有無を認識できる?
・locateOnScreenで指定画像と一致した箇所をクリックできる?
・PyAutoGUIの画像認識の精度を上げるにはconfidenceを使う?



こういった「悩み」に答えます。
 

★本記事の内容★
① PyAutoGUIとは?
② PyAutoGUIで画像認識:locateOnScreen
➂ 画像認識(locateOnScreen)の便利な技



これからご紹介する「【最短5分】PyAutoGUIのlocateOnScreenで画像クリック」を実践したことで、5分以内で「PyAutoGUIで画像認識を利用したGoogle検索」(下の動画参照)ができました。
 

PyAutoGUIのlocateOnScreenを使ったGoogle検索
PyAutoGUIのlocateOnScreenでGoogle検索した例



記事の前半では「PyAutoGUIとは?」や「PyAutoGUIのインストール方法」を解説します。

記事の後半では「PyAutoGUIのlocateOnScreenによる画像認識とは?」から「画像認識の精度を上げる方法」までをプログラムと実行例と共に紹介します。
 

この記事を読み終えることで、「PyAutoGUIでChromeなどのアプリケーションを自動操作できる」状態になります。

 

 


 

PyAutoGUIとは?

PyAutoGUIとは?


「PyAutoGUIとは?」/「PyAutoGUIの特徴」/「PyAutoGUIのユースケース(利用場面)」に関しては、以下の記事をご覧ください。
>> 【要点】PyAutoGUIとは?初心者向けに特徴から使い方までを図解

 

また、PyAutoGUIのインストール方法に関しては、以下の記事をご覧ください。
>> 【最短5分】PyAutoGUIをWindowsにインストールする手順
>> 【最短5分】UbuntuにPyAutoGUIをインストールする手順
>> 【最短5分】MacにPyAutoGUIをインストールする手順

 

ウェブブラウザなどの画面操作を自動化をしたい場合、PyAutoGUIを使って無料で実現できます。
以降で、PyAutoGUIで多用する「locateOnScreenを使った画像認識」の「仕組み」から「具体例」までをご紹介しますね。


 

PyAutoGUIで画像認識:locateOnScreen

PyAutoGUIで画像認識:locateOnScreen


「PyAutoGUIで画像認識:locateOnScreen」に関してご紹介します。
 

★PyAutoGUIのlocateOnScreenを使った画像認識について★
・画像認識(locateOnScreen)とは?
・locateOnScreenの用途
・PyAutoGUIの画像認識でクリックする例



PyAutoGUIのlocateOnScreenを使うことで、「指定した画像に似た箇所」の位置情報(座標)を取得できます。
 

上記項目で紹介するプログラムは、以下の日時と環境で動作確認済みです。
動作確認済み日時:2022年7月19日
動作確認済み環境:Windows Pro 11



以降で、上記「PyAutoGUIのlocateOnScreenを使った画像認識について」の各項目に関してご説明します。
 

画像認識(locateOnScreen)とは?

「画像認識(locateOnScreen)とは?」に関して解説します。
 

「そもそも画像認識とは?」から「locateOnScreenの構文」までを説明しますね。



PyAutoGUIで実現できる「画像認識」は、以下となります。
 

★PyAutoGUIで実現できる「画像認識」とは?★
PyAutoGUIで実現できる画像認識は、「指定画像と類似する箇所が画面上に存在するか否か」です。



注意点としては、PyAutoGUIの「画像認識」では、以下のような「画像認識」はできません。
 

★PyAutoGUIの画像認識で実現できないこと★
「画像内から文字を抽出」や「画像内に犬が映っているかどうかの認識」といったことは、PyAutoGUIではできません。
画像内から文字を抽出したい方は、「Tesseract」を使ってみましょう。
>> Tesseractの使い方【インストール→OCRの例→Python/Ruby】



PyAutoGUIで上記の「画像認識」をしたい場合、「locateOnScreen」関数がよく使われます。

locateOnScreenの構文は、以下となります。
 

★locateOnScreenの構文(リファレンス)★
・機能
 指定した画像が画面上に存在するかを確認する
・使い方
 locateOnScreen(画像ファイルのPATH)
・例
 locateOnScreen(‘click-button.jpg’)
・実行結果
 click-button.jpgと似た箇所がある場合:似た箇所の座標
 click-button.jpgと似た箇所がない場合:None
・参照
 locateOnScreen関数のリファレンス(公式サイト)



以上が、「画像認識(locateOnScreen)とは?」になります。
  

locateOnScreenの用途

「locateOnScreenの用途」に関して説明します。
 

PyAutoGUIで画像認識する際に利用される「locateOnScreen」の具体的な用途に関してご紹介しますね。



locateOnScreenの用途としては、主に以下の3つがあります。
 

★locateOnScreenの用途★
・指定した画像と似た箇所をクリックする
・指定した画像が表示されるまで自動操作を待機する
・指定した画像が表示されなかった場合、自動操作を異常終了させる



以降で、「locateOnScreenの用途:指定した画像と似た箇所をクリックする」に関する「プログラム」と「実行例」をご紹介します。
 

「locateOnScreenの用途:指定した画像が表示されるまで自動操作を待機する」に関する「プログラム」と「実行例」を知りたい方は、以下の記事をご覧ください。

>> 【実例あり】PyAutoGUIでsleepやPAUSEによる待機処理
 

「locateOnScreenの用途:指定した画像が表示されなかった場合、自動操作を異常終了させる」に関する「プログラム」と「実行例」を知りたい方は、以下の記事をご覧ください。

>> 【最短5分】PyAutoGUIで画像による条件分岐(if文)の実現方法
 

以上が、「locateOnScreenの用途」となります。
 

PyAutoGUIの画像認識でクリックする例

「PyAutoGUIの画像認識でクリックする例」に関して解説します。
 

先ほど紹介した「locateOnScreen」を用いて、画像認識を使ったGoogle検索を実現してみましょう。



まずは、ウェブブラウザでGoogle検索画面を開いてください。
>> Google検索画面
 

その後、Snipping Toolなどで「Google検索」ボタン(下図の赤枠)の画像を作成し、「google-search-button.jpg」というファイル名で保存しましょう。
 

Google検索ボタンの画像を作成
Google検索ボタンの画像作成



ちなみに、PyAutoGUIの画像認識(locateOnScreen)でGoogle検索するプログラムは、以下となります。

# -*- coding: utf-8 -*-
import pyautogui
from time import sleep
import subprocess
import pyperclip

### Main
## Chromeをシークレットモードで起動する
chrome_path = r"chrome.exe"
subprocess.Popen(['start', chrome_path, '--incognito'], shell=True)
sleep(2)

## Googleを開く
pyautogui.hotkey('ctrl', "l")
sleep(2)

pyperclip.copy('google.com')
pyautogui.hotkey("ctrl", "v")
pyautogui.press("enter")
sleep(5)

## Googleの検索欄にキーワードを入力する
pyperclip.copy('駆け出し物語')
pyautogui.hotkey("ctrl", "v")
sleep(2)

## Google検索のボタンをクリックする
p = pyautogui.locateOnScreen('google-search-button.jpg', confidence=0.7)
x, y = pyautogui.center(p)
pyautogui.click(x, y)
sleep(2)
print(p)

print("PyAutoGUIの画像認識(locateOnScreen)でGoogle検索を実施しました。")



上記のプログラムを作成し、「pyautogui-locateOnScreen-google-search.py」というファイル名で保存してください。 
 

続いて、コマンドプロンプトを起動し、作成したプログラムを以下のコマンドで実行してみましょう。

python pyautogui-locateOnScreen-google-search.py



コマンド実行後、下の動画のように「Google検索できた」場合、「正常に作成したプログラムを実行できた」と判断できます。
 

PyAutoGUIのlocateOnScreenを使ったGoogle検索
PyAutoGUIのlocateOnScreenでGoogle検索した例



以上が、「PyAutoGUIの画像認識でクリックする例」となります。
 

PyAutoGUIでボタンなどをクリックしたい場合、「locateOnScreen」を使うことで自動操作できます。


 

画像認識(locateOnScreen)の便利な技

画像認識(locateOnScreen)の便利な技


「画像認識(locateOnScreen)の便利な技」に関してご紹介します。
 

★画像認識のlocateOnScreen関連の役に立つ情報★
・locateOnScreenの種類
・画像認識の精度を上げる方法:confidence
・画像認識でクリックする座標の調整方法



PyAutoGUIの画像認識(locateOnScreen)が期待する動作をしなかった場合に「役に立つ情報」を説明します。
 

上記項目で紹介するプログラムは、以下の日時と環境で動作確認済みです。
動作確認済み日時:2022年7月19日
動作確認済み環境:Windows Pro 11



以降で、上記「画像認識のlocateOnScreen関連の役に立つ情報」の各項目に関してご説明します。
 

locateOnScreenの種類

「locateOnScreenの種類」に関して解説します。
 

locateOnScreenと似た処理を行う関数として他に「2種類」あります。



locateOnScreenの種類として、以下の2種類があります。
 

★locateOnScreenの種類★
・locateCenterOnScreen
 指定画像と似た箇所の位置を(left, top, width, height)の形で取得 
・locateAllOnScreen
 指定画像と似た箇所の全位置を取得



実際に「locateOnScreen」「locateCenterOnScreen」「locateAllOnScreen」の違いを見るために、以下のプログラムを作ってみましょう。

# -*- coding: utf-8 -*-
import pyautogui
from time import sleep
import subprocess
import pyperclip

excel_icon_path = 'excel-icon.jpg' # excelのアイコン

### Main
## locateOnScreenを試す
p = pyautogui.locateOnScreen(excel_icon_path,confidence=0.7)
print('↓locateOnScreenの結果↓')
print(p)

## locateCenterOnScreenを試す
print('↓locateCenterOnScreenの結果↓')
p = pyautogui.locateCenterOnScreen(excel_icon_path,confidence=0.7)
print(p)

## locateAllOnScreenを試す
print('↓locateAllOnScreenの結果↓')
for data in pyautogui.locateAllOnScreen(excel_icon_path,confidence=0.93):
  print(data)



上記のプログラムを作成し、「pyautogui-locateOnScreen-kind.py」というファイル名で保存してください。 
 

続いて、コマンドプロンプトを起動し、作成したプログラムを以下のコマンドで実行してみましょう。

python pyautogui-locateOnScreen-kind.py



コマンド実行後、下の動画のように「各画像認識で得られた座標が出力された」場合、「正常に作成したプログラムを実行できた」と判断できます。
 

PyAutoGUIのlocateOnScreen/locateCenterOnScreen/locateAllOnScreenを試す
locateOnScreen/locateCenterOnScreen/locateAllOnScreenの違い

 

各関数の使い分けは、以下となります。
・locateOnScreen:ページ遷移などの待機処理をする場合に使う
・locateCenterOnScreen:クリック操作を自動化したい場合に使う
・locateAllOnScreen:複数箇所を操作したい場合に使う



以上が、「locateOnScreenの種類」となります。
 

画像認識の精度を上げる方法:confidence

「画像認識の精度を上げる方法:confidence」に関して説明します。
 

locateOnScreenの認識精度が悪い場合の改善方法をご紹介しますね。



PyAutoGUIの画像認識ができる関数「locateOnScreen」「locateCenterOnScreen」「locateAllOnScreen」で、精度を調節したい場合、「confidence」を使います。
 

★画像認識関数の認識精度を調整する方法★
・使い方
 locateOnScreen(画像ファイルのPATH, confidence=数字)
・例
 locateOnScreen(‘click-button.jpg’, confidence=0.7)
・実行結果
 click-button.jpgと70%似た箇所の座標を取得
・参照
 locateOnScreen関数のリファレンス(公式サイト)



上記confidenceの数字を高くすればするほど、「画像の誤検出」は、減ります。

「locateOnScreen」「locateCenterOnScreen」「locateAllOnScreen」を使った画像認識が期待通りに動作しない場合は、「confidence」を調整してみましょう。
 

以上が「画像認識の精度を上げる方法:confidence」となります。
 

画像認識でクリックする座標の調整方法

「画像認識でクリックする座標の調整方法」に関して解説します。
 

PyAutoGUIの画像認識を使ったクリックにおいて、クリック位置を調整することができます。



PyAutoGUIの画像認識でクリックする座標を調整する方法として、以下の2つがあります。
 

★画像認識でクリックする座標を調整する方法★
・locateCenterOnScreenを使う
 画像認識で取得した箇所において、中心をクリックできる
・新規Pointオブジェクトを作る
 右端や左端といった座標調整を自由にできる



上記2つの方法で「画像認識でクリックする座標の調整」を実施してみるために、以下のプログラムを作成しましょう。

# -*- coding: utf-8 -*-
import pyautogui

excel_icon_path = 'excel-icon.jpg'

### Main
## locateCenterOnScreenでクリックする座標を画像の中心に設定
p = pyautogui.locateOnScreen(excel_icon_path,confidence=0.7)
print('↓locateOnScreenの結果↓')
print(p)

## locateCenterOnScreenでクリックする座標を画像の中心に設定
p = pyautogui.locateCenterOnScreen(excel_icon_path,confidence=0.7)
print('↓locateCenterOnScreenの結果↓')
print(p)

## 新しくPointオブジェクトを作りクリック箇所を微調整
new_p = pyautogui.Point(x=p.x+100, y=p.y+1000)
print('↓新しくPointオブジェクトを作成した結果↓')
print(new_p)



上記のプログラムを作成し、「pyautogui-locateOnScreen-tuning.py」というファイル名で保存してください。 
 

続いて、コマンドプロンプトを起動し、作成したプログラムを以下のコマンドで実行してみましょう。

python pyautogui-locateOnScreen-tuning.py



コマンド実行後、下の動画のように「画像認識で得られた座標を調整できた」場合、「正常に作成したプログラムを実行できた」と判断できます。
 

PyAutoGUIのlocateOnScreenで得られた座標を調整する方法
画像認識で得られた座標を調整した例

 

「クリックする箇所を微調整したい」場合や「中心をクリックさせたい」場合にご紹介した方法を使いましょう。



以上が、「画像認識でクリックする座標の調整方法」となります。
 

PyAutoGUIのlocateOnScreenを使い「誤検出が多い」「誤った箇所をクリックする」などに遭遇した場合、上記でご紹介した方法を使ってみましょう。



ちなみに、「PyAutoGUIでExcelやWordの操作を自動化する方法は?」や「Pythonを基礎から体系的に学ぶ方法は?」などを知りたい方には、以下の記事で紹介している本や教材がオススメです。
>> PyAutoGUIの入門に役に立つオススメ本や教材6選

  

【まとめ】PyAutoGUIのlocateOnScreenで画像クリック【最短5分】

【まとめ】PyAutoGUIのlocateOnScreenで画像クリック【最短5分】


いかがでしたでしょうか?

PyAutoGUIで「locateOnScreenで画像認識行い、その結果をもとにボタンなどをクリック」に関するプログラムと実行例を紹介し、以下の悩みを解決しました。
 

★悩み★
・PyAutoGUIで画面内に指定画像の存在有無を認識できる?
・locateOnScreenで指定画像と一致した箇所をクリックできる?
・PyAutoGUIの画像認識の精度を上げるにはconfidenceを使う?



画像認識を使った操作自動化をしたい場合、PyAutoGUIのlocateOnScreenの利用を検討してみてください。

 

 


 


 

コメント

タイトルとURLをコピーしました