自学内容网 自学内容网

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


原文地址:https://blog.csdn.net/qq_44697754/article/details/144854616

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!