pyautogui提高图片定位识别的精准度

最近在使用pyautogui时,发现有一些小的按钮或者标示识别不了,特别是没有文字,只有一个图标的识别的特别差,倒是一些含有文字的识别的特别好。

img_point = pyautogui.locateCenterOnScreen("img/safari.png",grayscale=False)

我们经常使用就是上面的方法,直接传递一个图片地址,然后识别出具体的目录。

有很多人说grayscale设置灰度后就会加快识别速度,我试了这个不能增加准确度,对于我的项目没有什么用,最后找到confidence参数,这个参数的意思是降低识别的精准度,但是可能会出现假结果。

img_point = pyautogui.locateCenterOnScreen("img/safari.png",grayscale=False,confidence=0.7)

其实还可以这样,用循环来逐步降低经度

def pointLocateOnScreen(img_file):
    img_point = pyautogui.locateCenterOnScreen(img_file, grayscale=False)
    i = 1.0
    while True:
        print(i)
        i = i - 0.1
        if not img_point:
            img_point = pyautogui.locateCenterOnScreen(img_file, grayscale=False, confidence=i)
        else:
            return img_point
            break
        if i <0.5:
            break

print(pointLocateOnScreen("img/safari.png"))

### 抖音空间点选验证码识别解决方案 #### 1. 验证码结构分析 抖音的空间点选验证码由两个主要部分组成:标签部分和验证部分。标签部分展示需要点击的文字或图形,而验证部分则是一个复杂的背景图,其中包含了多个干扰项以及实际的目标对象[^1]。 #### 2. 图像预处理 为了提高后续特征提取的效果,在开始之前需对原始图像进行必要的预处理操作。这一步骤可能涉及灰度化、二值化、噪声去除等常规手段来增强目标区域与背景之间的对比度,从而使得待检测的对象更容易被定位出来。 ```python import cv2 import numpy as np def preprocess_image(image_path): img = cv2.imread(image_path, 0) # Read image in grayscale mode _, thresh_img = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY_INV) kernel = np.ones((3, 3), dtype=np.uint8) cleaned_img = cv2.morphologyEx(thresh_img, cv2.MORPH_CLOSE, kernel) return cleaned_img ``` #### 3. 特征提取与匹配 对于此类基于视觉的任务而言,有效的特征描述子至关重要。考虑到YOLO模型擅长于物体检测任务的特点,可将其应用于当前场景下的字符框定工作;而对于具体的字符识别,则推荐使用OCR技术完成最终确认过程。通过这种方式能够较为精准地区分出哪些是有效选项,哪些属于干扰因素。 ```python from paddleocr import PaddleOCR ocr_model = PaddleOCR(lang='ch') def extract_features_and_match(preprocessed_img): result = ocr_model.ocr(preprocessed_img) text_boxes = [] for line in result: box = line[0] txt = line[1][0] confidence_score = float(line[1][1]) if confidence_score >= 0.8: # Confidence threshold can be adjusted according to actual needs. text_boxes.append({"box": box, "text": txt}) return text_boxes ``` #### 4. 用户交互模拟 当成功解析出所有候选答案之后,下一步便是模仿真实用户的点击行为向服务器提交正确响应。此环节涉及到坐标转换逻辑的设计——即将屏幕上的物理位置映射至网页内部对应的虚拟坐标体系之中。此外还需注意动作轨迹的真实性模拟以免触发额外的安全机制。 ```python import pyautogui def simulate_user_interaction(text_boxes, target_texts=['一', '三']): screen_width, screen_height = pyautogui.size() for item in text_boxes: if any([target_text in item['text'] for target_text in target_texts]): center_x = (item['box'][0][0]+item['box'][2][0])/2 / screen_width * 100 center_y = (item['box'][0][1]+item['box'][2][1])/2 / screen_height * 100 pyautogui.moveTo(center_x, center_y, duration=0.5) pyautogui.click() simulate_user_interaction(extract_features_and_match(preprocess_image('captcha.png'))) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值