手搓系列之天眼查单缺口滑块验证——思路可拓展其他单缺口滑块完全免费通过率99%
评论
收藏

手搓系列之天眼查单缺口滑块验证——思路可拓展其他单缺口滑块完全免费通过率99%

经验分享
【耐家军】DC
2025-09-01 14:26·浏览量:2002
【耐家军】DC
影刀专家
影刀认证工程师
发布于 2025-09-01 14:262002浏览

效果展示

思路

  1. 边缘检测:对背景图和滑块图使用边缘检测算法(如Canny算法),提取出它们的轮廓。
  2. 轮廓匹配:与方法一类似,使用模板匹配(如cv2.matchTemplate)在背景图的边缘图中寻找滑块边缘图最匹配的位置。

py代码

所需库 OpenCV-Python、requests

# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块

import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
import cv2
import numpy as np
import requests


def download_image(url):
    """从网络下载图片"""
    response = requests.get(url)
    if response.status_code != 200:
        raise Exception(f"无法下载图片,HTTP状态码: {response.status_code}")

    # 将响应内容转换为字节流,然后转换为numpy数组
    image_data = np.frombuffer(response.content, dtype=np.uint8)
    # 使用OpenCV解码图片
    image = cv2.imdecode(image_data, cv2.IMREAD_COLOR)
    return image


def find_gap_position(bg_url, gap_url):
    """
    从网络下载背景图和缺口图,并计算缺口位置

    参数:
        bg_url: 背景图的URL
        gap_url: 缺口图的URL

    返回:
        缺口位置的X坐标
    """
    # 下载图片
    bg_image = download_image(bg_url)
    gap_image = download_image(gap_url)

    # 转换为灰度图
    bg_gray = cv2.cvtColor(bg_image, cv2.COLOR_BGR2GRAY)
    gap_gray = cv2.cvtColor(gap_image, cv2.COLOR_BGR2GRAY)

    # 使用边缘检测
    bg_edge = cv2.Canny(bg_gray, 100, 200)
    gap_edge = cv2.Canny(gap_gray, 100, 200)

    # 模板匹配
    result = cv2.matchTemplate(bg_edge, gap_edge, cv2.TM_CCOEFF_NORMED)

    # 寻找最佳匹配位置
    _, max_val, _, max_loc = cv2.minMaxLoc(result)

    print(f"匹配度: {max_val}")
    gap_x = max_loc

    # 可视化结果(可选,用于调试)
    # 在背景图上绘制矩形标记识别到的位置
    # h, w = gap_edge.shape
    # top_left = max_loc
    # bottom_right = (top_left[0] + w, top_left[1] + h)
    # cv2.rectangle(bg_image, top_left, bottom_right, (0, 255, 0), 2)

    # 显示结果
    # cv2.imshow('Detected Position', bg_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    return gap_x
def main(args):
    pass

流程代码


收藏58
全部评论1
最新
发布评论
评论