2017-04-27 3313 views
0

我試圖用PyAutoGUI的圖像識別功能(pyautogui.locateCenterOnScreen)承認一個簡單的「確定」按鈕,停止我的bot程序的可能塊,以輕微的問題,以擺脫可能的塊錯誤消息。但是,該功能有時僅適用於我通過截圖不同錯誤信息並將像素顏色並排比較而發現的情況。我發現的結果是兩個不同'OK'按鈕上的像素顏色通常偏離1,這說明圖像識別功能大部分時間返回None。即使顏色偏離1或2像素,我也希望能夠識別圖像。據我所知,是tolerance關鍵字參數,但屏幕上的按鈕的位置發生變化,因此很難用getpixel功能,您不能使用tolerancelocateCenterOnScreen(我的理解)。對於我如何解決這個問題會有什麼建議嗎?提前致謝。PyAutoGUI圖像識別 - 與像素顏色匹配

+0

我的答案中的提示是否可以爲您解決問題?有些事情還不清楚嗎?如果是,請問,如果不是,請接受答案(點擊'V',如果答案被接受,則變成綠色)。 – Claudio

回答

0

試試這個下面(在這裏看到:http://pyautogui.readthedocs.io/en/latest/screenshot.html

enter image description here

從我知道你已經嘗試過,這並沒有解決這個問題,你的情況的評論。

另一個想法,可以幫助是當你裁剪按鈕的圖像向下找到它在屏幕上所需的最低限度。通常中心附近的顏色比陰影更「穩定」。

從我所知道的意見,這沒有解決您的問題,無論是。

你允許的Windows 透明度在你的OS(透明度時,可以通過「看」,通過當前應用程序顯示的哪些是在這個應用程序的窗口的背景 - 是一種特性,它是一個默認值在許多版本的最新操作系統中)?

從我知道你做的評論。

這可能會導致嚴重的識別問題。減少(?到什麼水平)的透明度沒有解決的問題,是什麼意思是你唯一正確的方法是:

開關透明度功能關閉,以獲得穩定的顏色

就是這樣 - 問題解決了(如何爲您的特定系統做到這一點是另一個與圖像識別主題無關的問題)。

全部或一個從這個上面應該解決您的問題,如果你不將可能被迫使用其他的圖像處理工具來完成自己的圖像識別旁邊pyautogui

附錄:形狀和[OK]按鈕的顏色可以取決於許多因素,。如果在互聯網瀏覽器中顯示,則可以通過調整頁面大小來更改其大小。如果用戶對話框由不同的應用程序創建,如果應用程序不使用系統標準,[OK]按鈕的形狀和顏色也可能不同。如上所述,如果系統使用透明度功能,顏色可能會有所不同。

+0

嗨,我認爲將圖像裁剪到最低限度是行不通的,因爲我試圖識別的圖像在像素之間有差異,甚至彼此相鄰。我試圖通過降低透明度來解決我的問題(我正在使用macOS Sierra),但問題仍然存在。你認爲這可能與我的顯示器配置文件有關嗎?謝謝你的幫助。 –

+0

我的代碼中也使用'grayscale = True',但它每次彈出時都無法識別按鈕。 –

+0

查看更新的答案 - 我很確定這應該可以解決顏色變化的問題。 – Claudio