一、圖像識別概述
圖像識別是通過計算機對數字圖像進行分析處理,將像素點轉換成有意義的信息,進而實現對目標物體的自動識別,其被廣泛應用於股票識別、人臉識別、動物識別等領域中。pyautogui是一款基於python的圖像處理庫,其中識別圖像是其重要的功能之一。
二、pyautogui中圖像識別的應用場景
pyautogui的圖像識別功能被廣泛應用於企業自動化、遊戲輔助等領域。
企業自動化:自動化測試之類的場景需要圖片匹配和位置確認,這時pyautogui的圖像識別功能就可以幫忙完成任務。例如,在寫測試腳本時,可以使用pyautogui識別圖片來判斷是否達到了預期的狀態。
遊戲輔助:在遊戲中,一些小遊戲會彈出,但是這些遊戲不是我們來玩的,而是需要機器來玩。這時就需要用到pyautogui來進行圖像識別與控制。
三、pyautogui中基本的圖像識別與匹配函數
在使用pyautogui進行圖像識別時,最常用的函數是locateOnScreen和locateCenterOnScreen。
import pyautogui
# locateOnScreen可以找到screen的圖片,返回相對於屏幕左上角的位置
location = pyautogui.locateOnScreen('example.png')
# locateCenterOnScreen會返回要搜索的圖像的中心點坐標
center = pyautogui.locateCenterOnScreen('example.png')
除此之外,還有其他函數用於匹配圖像,比如find,find_all,locate,locateAll。
四、pyautogui中的圖像識別高級應用
1.圖像縮放比例問題
在使用pyautogui識別圖像時,有時候會遇到縮放比例問題。這種情況可以使用函數中的region參數進行解決,將圖片固定位置,避免被縮放。
# 先確定定位區域,然後將圖像匹配到該區域中,狀態欄被截掉。
target_location = pyautogui.locateOnScreen('window.png', region=(0, 0, 500, 500))
# 對於每一個意圖匹配的區域通過縮放和滾動取到對應的相對位置
specific_region = (target_location[0], target_location[1], target_location[0] + 500, target_location[1] + 500)
pyautogui.scroll(-400)
print(pyautogui.locateOnScreen('window.png', region=specific_region))
2.使用pyautogui實現模擬滑鼠和鍵盤事件
pyautogui的圖像識別功能不僅可以用於識別圖像,還可用於模擬滑鼠和鍵盤事件。例如,用程序解鎖桌面:
import pyautogui
auth_image = None
while True:
auth_image = pyautogui.locateCenterOnScreen('lock.png')
if auth_image is not None:
break
pyautogui.click(auth_image) # 點擊鎖屏圖片
pyautogui.sleep(3) # 等待屏幕鎖住
pyautogui.typewrite('password') # 輸入桌面密碼
pyautogui.press('enter') # 模擬按下回車鍵
3.使用pyautogui實現自動登錄
通過識別圖片的方式來實現自動登錄,效果比OCR識別文字要好,識別率也更高。
import pyautogui
def auto_login(password):
while True:
# 匹配登錄按鈕位置,不存在則跳過
login_image = pyautogui.locateOnScreen('login.png', confidence=0.8)
if login_image is None:
continue
# 點擊登錄按鈕
pyautogui.click(login_image)
# 匹配是否彈出輸入密碼界面,不存在則跳過
password_image = pyautogui.locateOnScreen('password.png', confidence=0.8)
if password_image is None:
continue
# 識別並輸入密碼,敲擊登錄
pyautogui.typewrite(password, interval=0.1)
pyautogui.press('enter')
break
auto_login('password')
五、pyautogui圖像識別的局限
pyautogui識別速度相對較慢,而且每次圖像識別需要對屏幕進行一次截圖,所以不能快速地進行大規模的圖片搜索工作。同時,由於識別是通過比較像素點進行的,所以在像素點相似的情況下容易誤判或者漏判。
六、結語
總結來說,pyautogui圖像識別是一款非常實用的圖像操作庫,可以進行多方面的圖像相關操作,極大地提高自動化測試和遊戲輔助的效率,但是在實際應用中需要注意圖像識別的準確率和速度問題。
原創文章,作者:HRCW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/137194.html