当サイトには広告・プロモーションが含まれています。

Python | 画像認識で自動クリック!「PyAutoGUI」

この記事でわかること

「画面」を見て「判断」し、「自動クリック」をさせる。
「ディープラーニング」は要らないけど、「単純作業」を「自動で」やって欲しい・・!

という方のための記事です。

実は「Python」で「簡単に」作れますよ!

pyautoguiとは

キーボード操作やマウス操作をプログラムから実施できるようにするpythonライブラリです!

目次

作業の自動化 「pyautogui」を使おう!

Pythonコード | 簡単な例

import pyautogui
x, y = pyautogui.locateCenterOnScreen(”img.png”)
pyautogui.click(x,y)

このファイル「simple_ex.py」と同じフォルダに「img.png」を置きます。

実行すると「img.png」と同じ画像を画面上で探してきて、その位置をクリックします。

便利に使う例

ある画像を見て、別の画像をクリックさせることもできます。

動作

スタートボタンを探してクリックさせる。ランプがついたらストップボタンを押す。
・・・単純だけど人がやっている作業、ありますよねー。

STEP
「スタートボタン」を認識して、「スタートボタン」を押す。

早すぎるとわかりにくいので前後に3秒待ちます。

STEP
「ONランプ」を認識して、「ストップボタン」を押す。

「Pause」で終わります。

ファイル名画像
“start.png”「Start」ボタン
“on.png”「on」ランプ
“stop.png”「Stop」ボタ

こういう微妙に手間がかかる作業を自動化したいんです!

Pythonコード | pyautogui と OpenCV を使用

import pyautogui, os
pyautogui.useImageNotFoundException()

def click_from_imagename(name_check, name_click, conf, message):
    while True:
        # check img
        try:
            pyautogui.locateCenterOnScreen(name_check, grayscale=True, confidence=conf)
        except pyautogui.ImageNotFoundException:
            print(".", end="")
            pyautogui.sleep(0.3)
        else:
            # click img
            try:
                x, y = pyautogui.locateCenterOnScreen(name_click, grayscale=True, confidence=conf)
            except pyautogui.ImageNotFoundException:
                printa(".", end="")
                pyautogui.sleep(0.3)
            else:
                #print('x:{}\ny:{}'.format(x, y))
                pyautogui.click(x,y)
                print(message)
                break

s = "start.png"
o = "on.png"
p = "stop.png"

 
print("Start Watching!")
print("...Waiting 3sec...")
pyautogui.sleep(3)
click_from_imagename(s, s, 0.95, "Found Start Button! Pressed!")
print("...Waiting 3sec...")
pyautogui.sleep(3)

click_from_imagename(o, p, 0.95, "Found ON! Stop Pressed!")
os.system('PAUSE')

使い方のポイント

ライブラリ

Pythonライブラリの「pyautogui」と補助で「OpenCV」を使用します。適宜インストールしましょう。

conda install -c conda-forge pyautogui
conda install -c conda-forge opencv

※下記のように解凍に失敗してエラーになることがありました。このページが参考になります。

failed with initial frozen solve. Retrying with flexible solve.
failed with repodata from current_repodata.json, will retry with next repodata source.

私は下記の対応で正常にインストールできました。

conda update --all

画像の認識

 pyautogui.locateCenterOnScreen(name_check, grayscale=True, confidence=conf)

与えられた画像(name_check)を探します。
オプションとして画像をモノトーンにする「grayscale=True」と、完全一致でなくてもOKにする「confidence=0~1の間の数字」を入れています。
confidenceオプションの使用にはOpenCVライブラリが必要です。
このオプションは便利なのでいれましょう!

try:
    pyautogui.locateCenterOnScreen(name_check, grayscale=True, confidence=conf)
except pyautogui.ImageNotFoundException:

ここでは「画像の有り無し」をアクション前に先にチェックします。
画像がないとpyautogui.locateCenterOnScreenはエラーを出すので、try/except文を使っています。
なおexceptは「pyautogui.ImageNotFoundException」をつけることで、「画像がなかった場合の例外処理」にしています。
これをwhile文で監視し続けるわけですね。

try:
exept:
else:

tryで成功した場合はelseに進みます。

二重try/exeptにすると若干読みづらいので、elseを利用しています。

クリックの実行

try:
    x, y = pyautogui.locateCenterOnScreen(name_click, grayscale=True, confidence=conf)
else:
    pyautogui.click(x,y)

「name_check」があることを認識した上で、「name_click」を探しに行きます。
「x, y = pyautogui.locateCenterOnScreen」とすることで、画面上の位置x,yを返してくれます。
無事見つかれば、elseに進んでその位置をクリックします。

AIってほどでもないけど、手軽に自動化してくれる処理が簡単に作れて素晴らしい・・・!!
日常の業務に便利です。

人に渡す場合はexeに!

このスクリプトは当然(ライブラリを入れた)Python環境が無いと動きません。
人に渡すときは「exeファイル」にすることもできます。

そんなときは「pyinstaller」を使いましょう!

conda install -c conda-forge pyinstaller

使い方はAnaconda Promptで、目的のフォルダに移動したあと

pyinstaller auto-click.py 

を実行します。コンソールを見せない場合はオプションをつけて

pyinstaller auto-click.py --noconsole

としましょう!

画像のファイルはexeファイルと別に持っておく必要があります。
exeファイルと同じフォルダに画像データを入れて下さいね。

まとめ

Pythonのライブラリpyautoguiとopencvで、画像認識で自動クリックさせるスクリプトを紹介しました。
日々のじみーな作業を自動化しましょう!!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次