• 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("
    
    
    === 开始 ===
    
    
    ")
    
    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

  • 相关阅读:
    这是一个包括189819个字母的肌联蛋白的化学名
    開始Unity3D的学习之旅
    scanf函数
    Android应用中使用百度地图API并加入标注(一)
    android 5.0新特性
    高速阅读
    GitHub具体教程
    十一招解决:系统IE部分网页打不开怎么办(转载)
    c语言中的位移位操作
    [置顶] android调用第三方库——第四篇——调用多个第三方库
  • 原文地址:https://www.cnblogs.com/stumpx/p/14888698.html
Copyright © 2020-2023  润新知