簡體   English   中英

Python LocateOnScreen 無法在全屏模式下工作

[英]Python LocateOnScreen not working in fullscreen

嘿伙計們,我是 python 的新手,我花了大約 30 個小時試圖弄清楚如何解決這個問題。 抱歉,這太長了,我試圖提供盡可能多的關於我已經嘗試過的信息。

我正在使用 pyautogui locateOnScreen() 在全屏游戲中尋找在我站立角色范圍內行走的貓。 問題是當我有 shell 或命令提示符 window 在我的游戲前運行腳本時找到圖像,但是如果我啟動腳本並立即聚焦游戲屏幕,則根本找不到圖像。

我創建了一個新腳本,其中只有貓發現部分,因為主腳本的 rest 只是鍵盤輸入命令運行到貓然后靜止不動。

import pyautogui
import time
import win32api
import keyboard  # in my main script I use hotkeys and keyboard seemed to be the simplest route

def main():
    time.sleep(3)
    print('ok ready')

    while not keyboard.is_pressed('c'):
        if pyautogui.locateOnScreen('catplant.png', region=(260, 450, 300, 250), confidence=0.4) is not None:
            print('cat found')
            keyboard.press('o') # pushes button to start interacting with the cat when found
        else:
            print('cat not found')
        time.sleep(0.1)


if __name__ == '__main__':
    main()

注意:該區域是 100% 正確 + 額外范圍,因為我可以使用命令 window open 找到貓,我使用 win32api.SetCursorPos 和 for 循環來勾勒范圍,然后測試貓何時應該在范圍內。 此外,置信度必須為 40-50%,因為背景似乎與貓圖像過於相似,並且貓在行走時具有不同的動畫。

最讓我惱火的是,有時當只有 print('cat found') 行時,它會顯示找到了貓,盡管仍然不一致。 只要我在找到貓后添加任何命令、鼠標單擊或鍵盤輸入,腳本就根本找不到圖像,除了命令 window open。 當 print 被任何其他命令替換時也不起作用。 我嘗試添加延遲,因為我知道 function 可能很慢。 沒用。

我檢查了活動的 window 是使用代碼的游戲,只是為了確保結果仍然相同。

此外,當我運行腳本時,只要我 alt+tab 就找不到貓,如果在范圍內,就會發現貓,盡管 window 現在隱藏了貓,但有時仍會找到貓。 但是,當我在其他情況下使用 windows 隱藏貓時,這不起作用,例如在繪畫中的貓的圖片中或在前景中以命令提示符 window 開頭。

我可能不是很有經驗,但我覺得這可能是 pyautogui 的問題。 如果我找不到解決方案,我將不得不求助於 OpenCV,這似乎很復雜,我現在不喜歡這樣做。 感謝您花時間閱讀並可能嘗試為我解決此問題。 這是我在這個網站上的第一篇文章。

更新我終於找到了一個解決方案,閱讀有關全屏游戲中鼠標輸入的舊線程。 我在屏幕上以邊框模式運行我的定位,它運行良好。 由於某種原因全屏不起作用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM