Airtest的多圖查找與兩圖對比

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

呀,這麼認真都看到這裏啦,幫忙點個推薦支持一下唄,灰常感謝~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章