python pyautogui 画像認識できない
- 評価
- クリップ 0
- VIEW 2,371
python pyautoguiを使用し画像認識を試そうと思ったのですが、confidenceでエラーが出ます。
どうしたら認識できるのでしょうか。
以上、よろしくお願いいたします。
実行コード
import pyautogui as pg
from time import sleep
center = pg.locateCenterOnScreen("/Users/gorigorinogorira/Desktop/zoom_all/end.png",
grayscale=True, confidence=0.8)
print(center)
コード
エラーコード
File "test.py", line 5, in <module>
grayscale=True, confidence=0.8)
File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyautogui/__init__.py", line 175, in wrapper
return wrappedFunction(*args, **kwargs)
File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyautogui/__init__.py", line 207, in locateCenterOnScreen
return pyscreeze.locateCenterOnScreen(*args, **kwargs)
File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyscreeze/__init__.py", line 400, in locateCenterOnScreen
coords = locateOnScreen(image, **kwargs)
File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyscreeze/__init__.py", line 360, in locateOnScreen
retVal = locate(image, screenshotIm, **kwargs)
File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyscreeze/__init__.py", line 340, in locate
points = tuple(locateAll(needleImage, haystackImage, **kwargs))
File "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/pyscreeze/__init__.py", line 135, in wrapper
return wrappedFunction(*args, **kwargs)
TypeError: _locateAll_python() got an unexpected keyword argument 'confidence'
コード
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
+1
locateCenterOnScreen() はマッチに失敗すると None を返します。
マッチに失敗する原因として以下が考えられます。
- 探したい箇所 (ボタンなど) の見た目や大きさが指定した画像と変わってしまっている
- 指定した箇所が存在しないまたは他のウィンドウなどで隠れて画面上に見えなくなっている
- シングルディスプレイでない (ディスプレイが2つ以上) 場合、メインディスプレイ上のものしか見つけられないみたいです。
テンプレートマッチングで画面上にあるかどうか探す仕組みなので、画像と全く同じものがディスプレイ上に見える状態になっていないとそもそも検索できません。
サンプルコード
teratail の「質問する」ボタンの位置を取得するサンプルコード
import pyautogui as pg
center = pg.locateCenterOnScreen("template.png", grayscale=True, confidence=0.8)
print(center) # Point(x=1504, y=128)
_locateAll_python() got an unexpected keyword argument 'confidence'
というエラーが出る場合は、OpenCV がインストールされていないのが原因なので、pip install opencv-contrib-python
でインストールします。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
tiitoi
2020/06/02 11:59
print("center") ではなく、print(center) では?
print("center") だと変数ではなく、文字列を出力しているだけになりますよ
goliragolira
2020/06/02 12:13
ありがとうございます!
本当ですね、かなり初歩的な間違えでした笑
tiitoi
2020/06/02 12:21
None が返ってきたということは指定した画像とマッチする場所が見つからなかったということです。confidence を低い値に設定し、マッチする基準を下げてはどうでしょうか?
pg.locateCenterOnScreen("/Users/gorigorinogorira/Desktop/zoom_all/end.png", confidence=0.80)
goliragolira
2020/06/02 12:42
迅速なご対応ありがとうございます。助かります。
今度はconfidenceでエラーが出てしました泣
tiitoi
2020/06/02 12:57
OpenCV が入っていないとそのエラーが出るみたいです。pip でインストールしてからもう一度ためしてみてはどうでしょうか。
pip install opencv-contrib-python
ちなみにマッチさせたい箇所と指定した画像は大きさや色は完全に同一ですか?
マッチに失敗しているので、もう一度キャプチャしてマッチ対象の画像を作り直すのも有効かもしれません。
goliragolira
2020/06/02 13:00
かしこまりました、試してみます。
わざわざ調べてもらいありがとうございます。
goliragolira
2020/06/02 13:19
写真も他のに変えたりして何度かやってみたのですが
やはり同じエラーが出てしまいます。
他の手を考えた方が良いですかね。
tiitoi
2020/06/02 13:38
PyAutoGUI で画像の箇所を探すというのは「テンプレートマッチング」という手法を使っているのですが、なぜマッチに失敗したのかは実際にこちらで実行して試すことはできないので、回答できないです。力になれずすみません。
goliragolira
2020/06/02 13:52
いえとんでもないです。ここまでしていただいただけで十分助かりました。
よろしければベストアンサーに選びたので、空欄でも良いので回答していただくことは
可能でしょうか。
以上、よろしくお願いいたします。
tiitoi
2020/06/02 14:35
わかりました。質問に対する答えにはなっていませんが、他の方が見たときように考えられる一般的な原因を書きました。