airtest局部識圖|局部找圖


airtest局部識圖|局部找圖

# -*- encoding=utf8 -*-
__author__ = "Administrator"

from airtest.core.api import *
from airtest.cli.parser import cli_setup

from airtest.aircv import *
import time


def FindSubImg(temp, endPos, startPos=[0, 0]):
    """
    局部找圖
    :param startPos:        找圖范圍開始點
    :param endPos:          找圖范圍結束點
    :param temp:            目標圖片
    :return: [posX,posY] | None    坐標
    """
    startTime = int(round(time.time() * 1000))
    endTime = int(round(time.time() * 1000))
    print('Log SubTime', endTime - startTime)
    loopFlag = 0
    while endTime - startTime < 5000:
        loopFlag += 1

        print('Log loopFlag', loopFlag)

        # 全屏截圖
        screen = G.DEVICE.snapshot()

        # 獲取設備屏幕分辨率(豎屏)
        height = G.DEVICE.display_info['height']
        width = G.DEVICE.display_info['width']
        print('Log height', height)
        print('Log width', width)

        # 局部截圖
        local_screen = aircv.crop_image(screen, (startPos[0], startPos[1], endPos[0], endPos[1]))

        # 將我們的目標截圖設置為一個Template對象
        tempalte = temp
        # 在局部截圖里面查找指定的圖片對象
        pos = tempalte.match_in(local_screen)
        print('Log pos', pos)

        if not pos:
            endTime = int(round(time.time() * 1000))
            print('Log SubTime, continue', endTime - startTime)
            continue

        # 返回找到的圖片對象的坐標(該坐標是相對於局部截圖的坐標)
        # print(pos)

        # 若要返回目標在整個屏幕中的坐標,則x,y都需要加上局部截圖時設置的最小x、y
        resPos = [pos[0] + startPos[0], pos[1] + startPos[1]]
        print('Log resPos', resPos)
        endTime = int(round(time.time() * 1000))
        print('Log SubTime, Ok Res', endTime - startTime)
        return resPos

    print('Log Err, Func FindSubImg None Return')
    endTime = int(round(time.time() * 1000))
    print('Log SubTime, None Res', endTime - startTime)
    print('Log Start exists')
    return exists(temp)


if not cli_setup():
    auto_setup(__file__, logdir=None, devices=["android://127.0.0.1:5037/610e8756?cap_method=MINICAP_STREAM&&ori_method=MINICAPORI&&touch_method=MINITOUCH", ])

# script content
print("\n\n\n=== 開始 ===\n\n\n")

touch(FindSubImg(Template(r"tpl1623399241628.png", target_pos=5, record_pos=(-0.426, -0.904), resolution=(1080, 2340)), [350, 340]))

 本文地址:

https://www.cnblogs.com/stumpx/p/14888698.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM