像MAA这类游戏脚本,是怎样实现识别并点击的?

前言

作为一个懒狗,在敲代码之余,最爽的事莫过于同时还能干点别的。

例如明日方舟的MAA,它的诞生如带了"创国之举"的"数万真言",给我这种手动党的最终防线造成了极大量的万能伤害。作为一名码农,自然好奇这类游戏代码是如何实现的。

实现

篇幅有限,MAA代码量庞大,实现逻辑复杂,不可能完全展现,以下是用python写的极简版代码。

首先,导入所需要的库

python 复制代码
import cv2
import pyautogui
import time

opencv(cv2):功能强大的图像识别库
pyautogui:用于模拟键鼠点击的库

收集能作为唯一标识的特殊位置图片

(例如我要在肉鸽中买下水陈,就需要收集水陈引以为傲的笑脸作为标识图片)

截图,转化

python 复制代码
    # 截图
    image = pyautogui.screenshot
    image.save("screenshot.png")
    
    #将图片转换为opencv可使用的格式
    screen_cv2 = cv2.imread("screenshot.png")
    target_cv2 = cv2.imread("假日威龙.png")

首先对整个屏幕进行截屏,并保存为screenshot.png,然后将截屏图片(screenshot.png)与目标图片(假日威龙.png)转化为opencv可使用的类型,供后面使用 。

识图,获取坐标

python 复制代码
# 将截屏与目标图片进行比对
result = cv2.matchTemplate(screen_cv2, target_cv2, cv2.TM_CCOEFF_NORMED)
# 解析并获取置信度与坐标
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
# 比较最高置信度与置信度阈值,获取坐标
if max_val >= 0.92:
    #计算中心坐标
    lx, ly = max_val
    h, w, c = target_cv2.shape
    if lx < 0 or ly < 0 or h <=0 or w <= 0:
        return None
    cx, cy = lx + w/2, ly + h/2
else:
    return None

1. cv2.matchTemplate(),模板匹配。screen_cv2是待搜索的图像,target_cv2是要匹配的模板图像,cv2.TM_CCOEFF_NORMED是采用归一化的相关系数匹配方法。最后得到的result是其中每个元素表示对应位置的匹配程度。简单来讲,就是比对截屏与水陈的对应程度,得到一系列结果
2. cv2.minMaxLoc(),调用cv2.minMaxLoc函数来找到匹配结果矩阵result中的最小值和最大值及其对应的位置。

  • min_val是匹配结果矩阵中的置信度最小值。
  • max_val是匹配结果矩阵中的置信度最大值。
  • min_loc是最小值所在的左上角坐标,以(x, y)的形式返回。
  • max_loc是最大值所在的左上角坐标,以(x, y)的形式返回。
    置信度:两者的相似程度,越高越好

3. 6到14行代码,判断置信度最大值max_val是否大于0.92,如果是则根据左上角xy坐标计算出中心坐标,供后续点击做准备。

点击

python 复制代码
time.sleep(0.5)
pyautogui.click(cx, cy)

调用pyautogui.click函数进行屏幕点击。

总而言之,赞美开源🌞

相关推荐
m***记5 分钟前
Python 数据分析入门:Pandas vs NumPy 全方位对比
python·数据分析·pandas
MYX_30913 分钟前
第七章 完整的模型训练
pytorch·python·深度学习·学习
新子y30 分钟前
【小白笔记】岛屿数量
笔记·python
CLubiy35 分钟前
【研究生随笔】Pytorch中的线性代数
pytorch·python·深度学习·线性代数·机器学习
reasonsummer38 分钟前
【办公类-115-02】20251018信息员每周通讯上传之文字稿整理(PDF转docx没有成功)
python·pdf
材料科学研究1 小时前
深度学习物理神经网络(PINN)!
python·深度学习·神经网络·pinn
兰文彬1 小时前
Pytorch环境安装指南与建议
人工智能·pytorch·python
哦你看看1 小时前
学习Python 03
开发语言·windows·python
后端小张1 小时前
[AI 学习日记] 深入解析MCP —— 从基础配置到高级应用指南
人工智能·python·ai·开源协议·mcp·智能化转型·通用协议
天青色等烟雨..1 小时前
AI+Python驱动的无人机生态三维建模与碳储/生物量/LULC估算全流程实战技术
人工智能·python·无人机