結論
pyautoguiで画像ファイルから特定の画像を探すにはpyautogui.locate(対象画像ファイル, 探したい画像ファイル)
を使うとOK
対象画像ファイル
に探したい画像ファイル
が含まれているとあれこれ返ってくる
これだけだとあまりにもそっけないので、今後の自分のために発見までの道のりを記しておく
マニュアルを読んだ
マニュアルには現在表示されている画面から特定の画像を探すときに使うpyautogui.locateOnScreen
についての説明がある
たとえば以下の画像quitBtn.png
が画面上にあるか探し出したいとする
そんな時は
pyautogui.locateOnScreen('quitBtn.png')
とすると場所情報などが返ってくる
似たような関数として画面上から画像を探し出し、その中心座標を返すpyautogui.locateCenterOnScreen
というのもある
けれど、ある画像ファイルの一部に特定の画像が含まれているから探す関数というのが見当たらない
例えば、次のようなrrScreen.png
というのが保存されていたとして
この中にquitBtn.png
が含まれているか(画像ファイルの右下にある)、含まれているならその場所情報を返す、という方法がわからなかった
ソースコードを読んでみた
するとtestのコードに以下のようなのがあるではないか
github.com/asweigart/pyautogui/tests/test_pyautogui.py
pyautogui.useImageNotFoundException()
with self.assertRaises(pyautogui.ImageNotFoundException):
pyautogui.locate("100x100blueimage.png", "100x100redimage.png")
# Commenting out the locateAll*() functions because they return generators, even if the image can't be found. Should they instead raise an exception? This is a question for pyscreeze's design.
# with self.assertRaises(pyautogui.ImageNotFoundException):
# pyautogui.locateAll('100x100blueimage.png', '100x100redimage.png')
これか!と思って試してみたらビンゴでした
ptpython
>>> pyautogui.locate('tests/images/quitBtn.png', 'tests/images/rrScreen.png')
Box(left=336, top=844, width=261, height=73)
こうして無事にとってこれました