news 2026/10/19 0:44:36

要不然让ai研究原神的界面也行,比如写个skill文件按下某个按键会进入什么界面,不给坐标,搞个程序识别按钮给个固定标签

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
要不然让ai研究原神的界面也行,比如写个skill文件按下某个按键会进入什么界面,不给坐标,搞个程序识别按钮给个固定标签

你的想法非常具有可行性,而且与当前主流的原神自动化工具(如 BetterGI)和前沿 AI 智能体(如字节 Lumine)的核心思路高度一致:通过视觉识别界面元素并赋予语义标签,而非依赖固定坐标或内存读取。这种“基于图像理解 + 语义映射”的方式,不仅能提升泛化能力,还能有效规避游戏反作弊机制。

下面我将从实现逻辑、技术选型、标签体系设计、实际应用示例四个维度,为你详细拆解如何构建这样一个“不依赖坐标的原神界面识别系统”。


一、核心实现逻辑:视觉识别 + 语义标签映射

你的目标可以抽象为以下流程:

  1. 截屏获取当前游戏画面;
  2. 使用 CV(计算机视觉)模型识别界面上的关键 UI 元素(如“角色”按钮、“背包”图标、“确认”弹窗等);
  3. 为每个识别到的元素分配一个固定的语义标签(如UI_BUTTON_CHARACTER、UI_DIALOG_CONFIRM);
  4. 当用户/程序发出指令(如“打开角色界面”)时,系统查找对应标签的 UI 元素位置,并模拟点击;
  5. 整个过程不依赖绝对坐标,而是基于图像内容动态定位。

这正是BetterGI所采用的“零侵入式视觉自动化”架构 ,也是Lumine实现跨游戏泛化的基础 。


二、技术选型建议

要实现上述功能,可组合使用以下开源库:

表格

功能推荐工具说明
屏幕截图PIL.ImageGrab/mss快速获取屏幕图像
图像识别OpenCV + 模板匹配或YOLOv8 ONNX模板匹配适合固定图标;YOLO适合复杂场景检测
文字识别PaddleOCR / EasyOCR识别任务文本、按钮文字(如“确认”“取消”)
鼠标/键盘模拟pyautogui/pynput执行点击、按键操作
标签管理自定义 JSON/YAML 配置文件定义skill.json,映射“按键 → 目标界面 → 触发按钮标签”

💡进阶方案:若追求更高鲁棒性,可训练一个轻量级Vision-Language Model (VLM),输入图像 + 文本指令(如“打开角色面板”),直接输出点击坐标——这正是 Lumine 的核心技术 。


三、设计“Skill 文件”:语义化界面导航

你可以创建一个skills.yaml(或.json)文件,定义操作逻辑。例如:

yaml

编辑

open_character_menu: trigger_key: "C" target_ui: "character_main" required_button: "UI_BUTTON_CHARACTER" # 系统需识别此标签的按钮 timeout: 5 # 秒 confirm_dialog: trigger_action: "click_confirm" target_ui: "dialog_active" required_button: "UI_BUTTON_CONFIRM"

系统运行时:

  • 当检测到当前界面包含UI_BUTTON_CHARACTER标签的按钮(通过图像识别),且用户按下C键,则自动点击该按钮;
  • 若界面中出现“确认”文字或标准确认按钮,系统将其标记为UI_BUTTON_CONFIRM,供后续操作调用。

✅优势:即使米哈游更新 UI 布局,只要按钮外观不变,系统仍能工作;若按钮样式变化,只需更新模板图或重新标注训练数据,无需修改坐标。


四、实际识别与标签化示例

以“打开角色界面”为例:

  1. 准备模板图:截取原神主界面右下角的“角色”图标(带剑的头像),保存为assets/ui_character_icon.png;
  2. 在识别引擎中注册标签:python

    编辑

    UI_ELEMENTS = { "UI_BUTTON_CHARACTER": "assets/ui_character_icon.png", "UI_BUTTON_BAG": "assets/ui_bag_icon.png", "UI_BUTTON_CONFIRM": TextPattern("确认") # 结合 OCR }
  3. 运行时识别:python

    编辑

    for label, template in UI_ELEMENTS.items(): pos = cv2_template_match(screen, template) if pos: register_ui_element(label, pos)
  4. 执行技能:python

    编辑

    if "UI_BUTTON_CHARACTER" in detected_elements: click(detected_elements["UI_BUTTON_CHARACTER"])

这种方式已在BetterGI中成熟应用,其Core/Recognition/模块就包含 OCR、YOLO、OpenCV 多种识别器 。


五、与现有方案对比

表格

方案是否依赖坐标是否需游戏内数据泛化能力安全性
传统脚本(AutoHotkey)是否差高
内存读取工具否是(高风险)中❌ 极低(可能封号)
你的方案(视觉+标签)否否强高
Lumine AI否否极强(跨游戏)高

六、总结与建议

你提出的“用 AI 识别原神界面并打标签”的思路,完全可行且符合技术趋势。建议:

  1. 从模板匹配起步:用 OpenCV 实现基础按钮识别;
  2. 引入 OCR 处理文字按钮;
  3. 设计清晰的标签命名规范(如UI_{类型}_{功能});
  4. 将“技能”与“UI状态”解耦,形成可扩展的自动化框架;
  5. 参考 BetterGI 开源项目,其代码结构已非常接近你的设想。

未来若结合 VLM(如 Lumine 使用的视觉语言模型),甚至可实

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 21:42:47

《深入理解Java虚拟机》| 运行时数据区与OOM异常

摘要:本文系统解析《深入理解Java虚拟机》中的运行时数据区与OOM异常,包括程序计数器、虚拟机栈、堆内存、方法区与直接内存,同时讲解OOM异常等解决方案。 书摘内容 运行时数据区域 运行时数据区是 JVM 的内存核心,分为线程共享区…

作者头像 李华
网站建设 2026/10/16 11:34:06

leetcode 925. Long Pressed Name 长按键入-耗时100

Problem: 925. Long Pressed Name 长按键入 耗时100%&#xff0c;双指针&#xff0c;若左右字符相等l; r&#xff0c;若r > 0 && typed[r-1]typed[r]则r&#xff0c;否则false&#xff0c;最后若while(r < n2 && typed[r-1]typed[r]) r;&#xff0c;if(l…

作者头像 李华
网站建设 2026/10/14 1:26:37

如何获得Agentic AI提示工程架构师认证?备考与实战经验

Agentic AI提示工程架构师认证全攻略&#xff1a;备考计划实战经验核心技巧 1. 标题 (Title) 从入门到持证&#xff1a;Agentic AI提示工程架构师认证备考实战指南Agentic AI提示工程架构师认证之路&#xff1a;我如何3个月从零基础到通过考试&#xff1f;成为AI架构师的敲门…

作者头像 李华
网站建设 2026/10/18 5:42:12

14.僵尸孤儿-进程状态

一个pcb既属于全局链表又属于这个队列这个队列也是双链表&#xff0c;只不过先进先出FIFO运行状态就是正在被cpu运行&#xff0c;或者准备好了随时等待被调度。 包括运行和就绪。一个进程要去读键盘就要转去另一个队列&#xff0c;如果这个设备没有活跃&#xff0c;就没有读到键…

作者头像 李华
网站建设 2026/10/17 4:52:01

MATLAB鸟鸣识别系统截图](https://example.com/gui_screenshot.png

基于MATLAB的鸟鸣识别系统gui 传统声音特征&#xff0c;如MFCC机器学习分类器 分类器有支持向量积svm&#xff0c;邻近knn&#xff0c;分类树tree等 深度学习方法主要是先提取语谱图&#xff0c;有短时傅立叶时频图&#xff0c;和梅尔时频图 然后用googlenet进行深度学习训练 结…

作者头像 李华