当前位置: 首页 > article >正文

uiautomator2 实现找图点击

概述

最近看到某音、快手刷广会检测无障碍模式了,所以想尝试其他方法,打算使用Esp32 C3通过蓝牙的方式操作或使用USB操作看看效果。慢慢来,现在使用uiautomator2操作,因为是初学,可能写得不好请见谅。

实现代码

import uiautomator2 as u2
import cv2
import numpy as np

"""
device: abd设备
img: 原始图
template:模版图
threshold:模糊指数
is_click:是否点击(默认为true)
"""
def find_img_OnScreen(device, img, template, threshold,is_click=True):
    img_rgb = cv2.imread(img)
    template = cv2.imread(template)
    target_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
    template_gray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY)
    result = cv2.matchTemplate(target_gray, template_gray, cv2.TM_CCOEFF_NORMED)
    loc = np.where(result >= threshold)
    screen_width, screen_height = device.window_size()
    template_height, template_width = template_gray.shape[:2]

    for pt in zip(*loc[::-1]):
        if not is_click:
            return True
        # 计算模板的中心点
        center_x = pt[0] + template_width // 2
        center_y = pt[1] + template_height // 2

        # 添加随机性,选择中心点附近的随机位置
        random_offset_x = random.randint(-template_width // 4, template_width // 4)
        random_offset_y = random.randint(-template_height // 4, template_height // 4)
        click_x = center_x + random_offset_x
        click_y = center_y + random_offset_y

        # 确保点击位置在屏幕范围内
        click_x = max(0, min(screen_width, click_x))
        click_y = max(0, min(screen_height, click_y))

        # 转换为相对于屏幕的比例坐标
        click_x_ratio = click_x / screen_width
        click_y_ratio = click_y / screen_height

        print(f"Clicking at ({click_x_ratio}, {click_y_ratio})")
        device.click(click_x_ratio, click_y_ratio)
        return True
    return False

完整代码

dy极速版完整代码包含:养号打标签、开大宝箱、20分钟倒计时广告、听书、逛街功能。
算是半成品,仅供学习参考:
http://t.a0e.top/C39LV/B_94UfD3VI


http://www.kler.cn/a/502129.html

相关文章:

  • 【Docker】Docker部署多种容器
  • 如何将 sqlserver 数据迁移到 mysql
  • HOW - Form 表单确认校验两种模式(以 Modal 场景为例)
  • 贪心算法笔记
  • Docker 安装开源的IT资产管理系统Snipe-IT
  • linux-28 文本管理(一)文本查看,cat,tac,more,less,head,tail
  • 记一次学习skynet中的C/Lua接口编程解析protobuf过程
  • FreeSWITCH Sofia SIP 模块常用命令整理
  • 如何设计一个 RPC 框架?需要考虑哪些点?
  • 计算机网络 笔记 网络层1
  • 远程和本地文件的互相同步
  • 深度学习——pytorch基础入门
  • GPT 系列论文精读:从 GPT-1 到 GPT-4
  • 机器翻译优缺点
  • 2025第3周 | JavaScript中es7新增的特性
  • Kafka 超级简述
  • python中的if判断语句怎么写
  • 面向对象的基本概念
  • 如何选择 Dockerfile 的放置方式
  • Perl语言的语法
  • 【Git版本控制器--1】Git的基本操作--本地仓库
  • fastGpt 本地运行 mongo, 要加 directConnection=true 参数
  • 从电影《解密》,简单聊一聊现代密码学
  • Kubeflow:云原生机器学习工作流自动化开源框架详解
  • MySQL多版本并发(MVCC)机制
  • 阿里云ios镜像源