1. 前言
今天聊一下同學們經常問到的關於Airtest找圖的2個問題,一個是,如何在Airtest裏面做多圖查找;另一個是,如何直接傳入2張圖片,然後計算他們的可信度。
2. 多圖查找:find_all
這裏的多圖查找,指的是,一個畫面中,存在多個相同/相似的圖標,我們希望把他們都找出來,然後對所有的結果座標進行操作。
舉個最常見的例子,消消樂:
假設我們的目標是,找到4個小黃雞的座標,然後對它逐一進行點擊,那我們就可以使用Airtest提供的API,find_all
來完成:
# -*- encoding=utf8 -*-
__author__ = "AirtestProject"
from airtest.core.api import *
auto_setup(__file__)
results= find_all(Template(r"tpl1662624311911.png", record_pos=(-0.002, -0.178), resolution=(1080, 2520)))
print("--------------------------------")
print(results)
for i in range(0,4):
touch(results[i]['result'])
sleep(1.0)
find_all
給我們返回的結果是一個列表,列表裏面包含了識別結果的字典,從字典的 result
鍵值中,我們可以拿到我們想要的座標信息:
[{'result': (538, 1423), 'rectangle': ((490, 1363), (490, 1483), (587, 1483), (587, 1363)), 'confidence': 0.9852163195610046},
{'result': (301, 1186), 'rectangle': ((253, 1126), (253, 1246), (350, 1246), (350, 1126)), 'confidence': 0.9825006723403931},
{'result': (775, 1186), 'rectangle': ((727, 1126), (727, 1246), (824, 1246), (824, 1126)), 'confidence': 0.9197724461555481},
{'result': (249, 1894), 'rectangle': ((201, 1834), (201, 1954), (298, 1954), (298, 1834)), 'confidence': 0.7261688709259033}]
3. 兩圖對比
有部分特殊場景,我們需要對比截取好的2張圖片的相似度,這時候我們可以用Airtest提供的 cal_ccoeff_confidence
方法:
# -*- encoding=utf8 -*-
__author__ = "AirtestProject"
from airtest.core.api import *
from airtest.aircv.cal_confidence import *
auto_setup(__file__)
img1 = cv2.resize(cv2.imread(r"frog.png"),(85,100))
img2 = cv2.resize(cv2.imread(r"chick.png"),(85,100))
confidence = cal_ccoeff_confidence(img1,img2)
print("----------------")
print(confidence)
其中:
cv2.resize
用於統一圖片尺寸,上圖中的(85,100)爲我們指定的目標尺寸cv2.imread
用於讀取本地路徑下的圖片cal_ccoeff_confidence
用於對比兩張圖片的相似度,返回可信度的值
4. 小結
那今天的推文我們就簡單聊了2個Airtest關於找圖和圖片對比的API,其實關於多圖查找還有兩圖對比,Airtest還給我們提供了更多的方式,感興趣的同學可以關注我們後續的推文~
Airtest官網:https://airtest.netease.com/
Airtest教程官網:https://airtest.doc.io.netease.com/
搭建企業私有云服務:https://airlab.163.com/b2b
官方答疑 Q 羣:117973773
呀,這麼認真都看到這裏啦,幫忙點個推薦支持一下唄,灰常感謝~