要不然让ai研究原神的界面也行,比如写个skill文件按下某个按键会进入什么界面,不给坐标,搞个程序识别按钮给个固定标签
你提出的“用 AI 识别原神界面并打标签”的思路,完全可行且符合技术趋势。从模板匹配起步:用 OpenCV 实现基础按钮识别;引入 OCR 处理文字按钮;设计清晰的标签命名规范(如UI_{类型}_{功能}将“技能”与“UI状态”解耦,形成可扩展的自动化框架;参考 BetterGI 开源项目,其代码结构已非常接近你的设想。未来若结合 VLM(如 Lumine 使用的视觉语言模型),甚至可实。
你的想法非常具有可行性,而且与当前主流的原神自动化工具(如 BetterGI)和前沿 AI 智能体(如字节 Lumine)的核心思路高度一致:通过视觉识别界面元素并赋予语义标签,而非依赖固定坐标或内存读取。这种“基于图像理解 + 语义映射”的方式,不仅能提升泛化能力,还能有效规避游戏反作弊机制。
下面我将从 实现逻辑、技术选型、标签体系设计、实际应用示例 四个维度,为你详细拆解如何构建这样一个“不依赖坐标的原神界面识别系统”。
一、核心实现逻辑:视觉识别 + 语义标签映射
你的目标可以抽象为以下流程:
- 截屏获取当前游戏画面;
- 使用 CV(计算机视觉)模型识别界面上的关键 UI 元素(如“角色”按钮、“背包”图标、“确认”弹窗等);
- 为每个识别到的元素分配一个固定的语义标签(如
UI_BUTTON_CHARACTER、UI_DIALOG_CONFIRM); - 当用户/程序发出指令(如“打开角色界面”)时,系统查找对应标签的 UI 元素位置,并模拟点击;
- 整个过程不依赖绝对坐标,而是基于图像内容动态定位。
这正是 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 布局,只要按钮外观不变,系统仍能工作;若按钮样式变化,只需更新模板图或重新标注训练数据,无需修改坐标。
四、实际识别与标签化示例
以“打开角色界面”为例:
- 准备模板图:截取原神主界面右下角的“角色”图标(带剑的头像),保存为
assets/ui_character_icon.png; - 在识别引擎中注册标签:python
编辑
UI_ELEMENTS = { "UI_BUTTON_CHARACTER": "assets/ui_character_icon.png", "UI_BUTTON_BAG": "assets/ui_bag_icon.png", "UI_BUTTON_CONFIRM": TextPattern("确认") # 结合 OCR } - 运行时识别:python
编辑
for label, template in UI_ELEMENTS.items(): pos = cv2_template_match(screen, template) if pos: register_ui_element(label, pos) - 执行技能:python
编辑
if "UI_BUTTON_CHARACTER" in detected_elements: click(detected_elements["UI_BUTTON_CHARACTER"])
这种方式已在 BetterGI 中成熟应用,其 Core/Recognition/ 模块就包含 OCR、YOLO、OpenCV 多种识别器 。
五、与现有方案对比
表格
| 方案 | 是否依赖坐标 | 是否需游戏内数据 | 泛化能力 | 安全性 |
|---|---|---|---|---|
| 传统脚本(AutoHotkey) | 是 | 否 | 差 | 高 |
| 内存读取工具 | 否 | 是(高风险) | 中 | ❌ 极低(可能封号) |
| 你的方案(视觉+标签) | 否 | 否 | 强 | 高 |
| Lumine AI | 否 | 否 | 极强(跨游戏) | 高 |
六、总结与建议
你提出的“用 AI 识别原神界面并打标签”的思路,完全可行且符合技术趋势。建议:
- 从模板匹配起步:用 OpenCV 实现基础按钮识别;
- 引入 OCR 处理文字按钮;
- 设计清晰的标签命名规范(如
UI_{类型}_{功能}); - 将“技能”与“UI状态”解耦,形成可扩展的自动化框架;
- 参考 BetterGI 开源项目 ,其代码结构已非常接近你的设想。
未来若结合 VLM(如 Lumine 使用的视觉语言模型),甚至可实
更多推荐



所有评论(0)