pythonのpyautoguiを使用した画像認識処理待ちメモ
画像認識をpyautoguiで実行させる場合で、どのように処理待ちをするかというメモ。当初は一定期間sleepさせる原始的な方法にしていたが、該当の画像がどのくらいで表示されるかが不明な場合、余裕を持ってsleepさせる必要があり、結果的に多くの時間が掛かっていた。
time.sleep(15)
pos_check=pyautogui.locateOnScreen('対象の画像のパス', confidence=0.6)
pyautogui.click(pos_check)
該当の画像が表示されるまで、ループを回しながらsleepさせるようにした。画像が見当たらない場合は、ImageNotFoundException
が発生するので、そちらでスリープしてcontinueするように調整。
import pyscreeze
from pyscreeze import ImageNotFoundException
~中略~
def click_from_imagename(imagename,confidence,message):
for tryCount in range(30):
#該当の画像が画面上に存在する場合の処理
try:
if pyautogui.locateOnScreen(imagename, confidence=confidence):
print('Execute:{0}'.format(message))
pos_check=pyautogui.locateOnScreen(imagename, confidence=confidence)
pyautogui.click(pos_check)
time.sleep(1)
print('Done:{0}'.format(message))
break
#該当の画像が画面上に存在しない場合の処理
except pyautogui.ImageNotFoundException:
print('Waiting:{0}'.format(message))
time.sleep(1)
continue
~中略~
呼び出し時
click_from_imagename("対象の画像のパス",0.6,"実行名")
関連しているかもしれない記事
- tweepyを使用したtwitter apiの操作
- The installed version of lxml is too old to be used with openpyxl のエラー対応
- Pythonista 3を使ってiPhone上でpython実行環境を構築する