web-dev-qa-db-ja.com

PyAutoGui LocateOnScreen()が何も返さない理由

これが私が実行しようとしているコードです:

import pyautogui
r=pyautogui.locateOnScreen('C:\Users\David\Desktop\index.png',grayscale=False)
print r
6
Raheem

見つけるためには、ピクセル単位で完全に一致する必要があります。あらゆる種類の逸脱を許容するには、信頼パラメーターを呼び出すことができます。

例えば:

loc = pyautogui.locateOnScreen(image, grayscale=True, confidence=.5)

ただし、confidenceパラメーターを使用するには、opencv_pythonをインストールする必要があります。これは、pipを使用して簡単にインストールできます。

./python -m pip install opencv_python

その後、小さな違いを説明できるようになります。

11
Prelator2

私は同じ問題に遭遇していました、私がしたことは

import pyautogui 
r= None 
while r is None:
    r=pyautogui.locateOnScreen('C:\Users\David\Desktop\index.png',grayscale=False)
print r

画像を探すのに時間がかかるからだと思います。あなたが私とより良い解決策の共有を見つけた場合:)

3
aroy

同様の問題がありました。

MSペイントで比較画像を最初にjpgとして保存し、次にpngとして保存していたのが私の欠点でした。

比較画像は必ずpng形式で保存してください。この後、Locate機能がうまくいきました。

2
user1738998

locateOnScreen()関数は、画面に画像が見つからなかった場合にNoneを返します。一致は一致するために完全なピクセルでなければならないことに注意してください。余分な詳細が一致を台無しにしないように、index.pngを認識可能な最小のサイズにトリミングしてください。また、探しているものがその上にある他のウィンドウによって隠されていないことを確認してください。

2
Al Sweigart

私は以下を使用してこれを機能させました:

r = None
while r is None:
    r = pyautogui.locateOnScreen('rbin.PNG', grayscale = True)
print icon_to_click + ' now loaded'

キーは、grayscale = Trueにすることです。

2
feltersnach

問題を解決する方法を見つけました。できるだけ小さい画像のみを検索します。 3秒後に1ピクセルのみの画像が見つかりました。そして、500x500を超える画像を検索しようとすると、何も見つかりません。

0
Walter

私はその問題を抱えていましたが、写真を特定の部分に切り取り、それが検索されていて、時間がかかりました。

またはこれも機能します。

b = pyautogui.center('calc7key.png')
0
Khushal sharma

公式 ドキュメント は言う;

The Locate Functions
NOTE: As of version 0.9.41, if the locate functions can’t find the provided image, 
they’ll raise ImageNotFoundException instead of returning None.

したがって、例外が発生したかどうかを判断できます。また、While Trueループではなく、有限回数試行する必要があります。

retry_counter = 0
while retry_counter < 5:
    try:
        result = pyautogui.locateOnScreen(IMAGE_PATH_TO_FIND)
        if result:
            time.sleep(1)
            retry_counter = 10  # to break the loop
    except:
        time.sleep(1)  # retry after some time, i.e. 1 sec
        retry_counter += 1
0
Umair Bhatti

ライブラリpyautoguiにはいくつかの認識ポイントが必要だと思います。たとえば、電卓の7番目:

enter image description here

ウィンドウ10の計算機の7番。この形式では、画面上の位置がわかります。コメントしてくださってありがとうございます

0
diego