📚 知识库

11多对象组(图像识别/文字识别)

作者: aklai 更新时间: 2026-01-13 02:07 浏览次数: 69

多对象组功能使用教程

概述

多对象组功能是一个高级的识别系统,允许用户为同一个动作配置多个独立的检测组。每个对象组都有自己的检测目标和处理逻辑,为复杂的自动化场景提供更精确和灵活的控制。

支持的动作类型

  • 文字识别多对象组: 文字识别检测与点击
  • 图像识别多对象组: 图像模板识别检测与点击

核心概念

对象组 vs 标准模式

特性 标准模式 多对象组模式
检测逻辑 识别多个目标,找到任意一个即成功 依次检测每个对象组,找到第一个匹配的对象组即成功
处理逻辑 统一的成功/失败处理 每个对象组独立的成功/失败处理
配置复杂度 简单 高级
适用场景 简单检测需求 复杂条件分支逻辑

工作原理

  1. 顺序检测: 按对象组的创建顺序依次检测(非并行执行
  2. 优先匹配: 第一个成功匹配的对象组立即执行其配置的操作
  3. 立即停止: 一旦找到匹配的对象组,立即执行其操作并停止检测后续对象组
  4. 独立配置: 每个对象组有独立的检测参数和后续操作
  5. 无冲突问题: 由于是顺序执行,不存在多个对象组同时匹配的冲突

文字识别多对象组

使用场景

适合需要根据不同文字内容执行不同操作的场景:

  • 游戏: 根据不同按钮文字(”开始游戏”、”继续游戏”、”设置”)执行不同逻辑
  • 应用导航: 根据不同页面特征文字跳转到对应处理流程
  • 状态判断: 根据状态提示文字(”成功”、”失败”、”等待”)执行相应操作

配置步骤

1. 选择检测模式

在文字识别动作配置界面中: - 选择 “多对象组” 单选按钮 - 系统将显示多对象组配置界面

2. 创建对象组

点击右上角的 ”+” 按钮或 “创建第一个对象组” 按钮: - 系统自动创建一个新的对象组 - 默认名称为 “对象组1”、”对象组2” 等

3. 配置对象组基本信息

对于每个对象组:

对象组名称: - 输入有意义的名称,如 “开始游戏按钮”、”错误提示” - 便于后续管理和调试

文字识别检测目标: - 添加该对象组要检测的文字目标 - 每个对象组可以包含多个文字目标 - 支持精确匹配和模糊匹配 - 可以设置ROI识别区域

4. 配置检测成功后操作

每个对象组可以独立配置检测成功后的操作:

  • 无操作: 仅执行检测,不做额外操作
  • 执行动作组: 跳转执行指定的动作组
  • 跳转到动作: 跳转到脚本中的指定动作编号
  • 跳转到分组: 跳转到脚本中的指定分组名称

5. 配置检测失败后操作

同样可以为每个对象组配置检测失败时的处理:

  • 支持与成功后操作相同的选项
  • 失败处理仅在该对象组内的所有目标都检测失败时触发

配置示例

示例1: 游戏状态判断

注意: 对象组的顺序很重要!游戏结束是特殊状态,应该优先检测。

对象组1 - 游戏结束(优先检测特殊状态) - 名称: “游戏结束” - 检测目标: [“重新开始”, “返回主菜单”, “游戏结束”] - 成功后操作: 执行动作组 “重新开始流程” - 失败后操作: 无

对象组2 - 游戏进行中(检测正常状态) - 名称: “游戏进行中” - 检测目标: [“暂停”, “设置”, “分数:”] - 成功后操作: 执行动作组 “游戏操作流程” - 失败后操作: 跳转到动作 1

执行逻辑: 1. 先检测是否游戏结束 → 如果是,执行重新开始流程 2. 如果游戏没结束,再检测是否在游戏中 → 如果是,执行游戏操作

示例2: 应用状态检测

对象组1 - 登录状态 - 名称: “已登录” - 检测目标: [“个人中心”, “我的订单”, “退出登录”] - 成功后操作: 跳转到分组 “主要功能” - 失败后操作: 无

对象组2 - 未登录状态 - 名称: “未登录” - 检测目标: [“登录”, “注册”, “游客模式”] - 成功后操作: 执行动作组 “登录流程” - 失败后操作: 跳转到动作 1

图像识别多对象组

使用场景

适合需要根据不同图像内容执行不同操作的场景:

  • 游戏: 根据不同UI状态(主菜单、战斗界面、设置页面)执行不同操作
  • 应用自动化: 根据不同页面布局选择相应的操作流程
  • 状态监控: 监控多种可能的界面状态并分别处理

配置步骤

1. 选择检测模式

在图像识别动作配置界面中: - 选择 “多对象组” 单选按钮 - 系统将显示多对象组配置界面

2. 创建和配置对象组

与文字识别多对象组类似,每个对象组包含:

基本配置: - 对象组名称 - 模板图片列表 - ROI识别区域 - 匹配阈值

点击配置: - 随机偏移范围 - 精确偏移坐标(X, Y)

后续操作: - 成功后操作配置 - 失败后操作配置

3. 模板图片管理

每个对象组可以包含多个模板图片: - 支持添加、删除模板图片 - 自动生成Base64编码数据 - 找到任意一个模板匹配即认为该对象组匹配成功

配置示例

示例1: 游戏界面判断

注意: 按照状态的优先级和特异性安排顺序。

对象组1 - 结算界面(最优先,避免在结算页面执行战斗操作) - 名称: “结算页面” - 模板图片: [“确定按钮.png”, “经验值.png”] - 匹配阈值: 0.8 - 成功后操作: 跳转到动作 1

对象组2 - 战斗界面(其次,特定的游戏状态) - 名称: “战斗中” - 模板图片: [“技能按钮.png”, “血条.png”, “小地图.png”] - 匹配阈值: 0.85 - 成功后操作: 执行动作组 “战斗操作”

对象组3 - 主菜单界面(最后,通用状态) - 名称: “主菜单” - 模板图片: [“开始游戏按钮.png”, “设置按钮.png”] - 匹配阈值: 0.8 - 成功后操作: 执行动作组 “开始游戏流程”

执行逻辑: 1. 优先检测是否在结算页面 → 处理结算 2. 再检测是否在战斗中 → 执行战斗操作
3. 最后检测是否在主菜单 → 开始游戏

执行机制详解

核心执行逻辑

多对象组采用严格的顺序执行机制,具体流程如下:

1. 执行顺序

  • 按照对象组的创建顺序(在界面中的显示顺序)依次检测
  • 对象组1对象组2对象组3 → …
  • 这个顺序非常重要,决定了优先级

2. 停止条件

  • 一旦某个对象组检测成功,立即执行该对象组的后续操作
  • 立即停止检测后面的所有对象组
  • 即使后面的对象组也可能匹配成功,也不会被检测

3. 冲突处理

问题: 如果对象组1和对象组2都可能匹配成功怎么办? 答案: 不存在冲突!由于是顺序执行,只有对象组1会被执行。

示例场景:

对象组1: 检测 "确定" 按钮 → 匹配成功 → 执行对象组1的操作 → 结束
对象组2: 检测 "取消" 按钮 → 永远不会被检测到

4. 失败处理

  • 如果对象组1检测失败,继续检测对象组2
  • 如果对象组2检测失败,继续检测对象组3
  • 如果所有对象组都检测失败,则整个动作失败

5. 实际执行流程图

开始执行
    ↓
截取屏幕快照
    ↓
检测对象组1
    ↓
匹配成功? → 是 → 执行对象组1操作 → 结束
    ↓ 否
检测对象组2
    ↓
匹配成功? → 是 → 执行对象组2操作 → 结束
    ↓ 否
检测对象组3
    ↓
...(继续后续对象组)
    ↓
所有对象组都失败 → 动作执行失败

重要设计考虑

1. 对象组顺序的重要性

  • 优先级高的对象组应该放在前面
  • 比如:错误提示 > 正常按钮
  • 比如:特殊状态 > 通用状态

2. 互斥性设计

  • 设计对象组时应确保它们代表不同的状态
  • 避免多个对象组检测相同或相似的目标
  • 如果必须检测相似目标,通过顺序控制优先级

3. 性能优化

  • 把最常见的状态放在前面,减少平均检测时间
  • 避免创建过多的对象组影响性能

重试机制

多对象组支持重试机制: - 可以配置重试次数 - 重试时会重新截图并从对象组1开始重新检测所有对象组 - 每次重试都是完整的顺序检测流程 - 直到找到匹配的对象组或达到重试上限

ROI区域优化

  • 每个对象组可以独立设置ROI识别区域
  • 通过百分比坐标定义识别范围
  • 减少干扰,提高识别精度和速度

性能优化

文字识别优化: - 批量检测减少文字识别调用次数 - 相同ROI区域复用识别结果 - 支持结果缓存机制

图像识别优化: - 批量模板匹配 - 一次截图检测多个目标 - 自动处理Base64编码

最佳实践

1. 对象组设计原则

  • 互斥性: 确保不同对象组代表不同的状态或场景
  • 优先级: 将最重要或最可能出现的对象组放在前面(顺序决定优先级
  • 明确性: 使用清晰的命名和充分的检测目标
  • 避免重叠: 不要让多个对象组检测相同的目标,否则只有前面的会生效

2. 检测目标选择

文字识别目标: - 选择唯一性强的文字 - 避免过于通用的词汇(如”确定”、”取消”) - 考虑文字的稳定性

图像识别模板: - 选择特征明显的UI元素 - 避免容易变化的内容(如文字、数字) - 使用相对稳定的图标或按钮

3. 后续操作配置

  • 成功操作: 配置符合预期的后续流程
  • 失败操作: 提供容错和恢复机制
  • 无操作: 仅用于状态检测的场景

4. 调试和优化

  • 使用有意义的对象组名称便于日志跟踪
  • 通过日志观察检测顺序和结果
  • 根据实际使用情况调整对象组顺序

常见问答 (FAQ)

Q1: 多个对象组是同时检测还是按顺序检测?

A: 按顺序检测。系统会按照对象组的创建顺序(界面显示顺序)依次检测,不是并行执行。

Q2: 如果对象组1和对象组2都能匹配成功,会发生什么?

A: 只有对象组1会被执行。一旦对象组1匹配成功,系统立即执行对象组1的操作并结束,对象组2永远不会被检测到。

Q3: 对象组1执行完后,会继续检测对象组2吗?

A: 不会。对象组1成功后,整个多对象组动作就完成了,不会继续检测后续对象组。这是”找到第一个匹配就停止”的设计。

Q4: 如果对象组1检测失败,会怎么样?

A: 系统会继续检测对象组2,以此类推,直到找到一个成功的对象组或所有对象组都失败。

Q5: 对象组的顺序重要吗?

A: 非常重要!顺序决定了检测的优先级。建议将: - 更重要的状态放在前面 - 更可能出现的情况放在前面
- 更特异的检测目标放在前面

Q6: 如何避免对象组之间的冲突?

A: 由于是顺序执行,不存在真正的”冲突”。但要注意: - 避免让多个对象组检测相同的目标 - 如果确实需要检测相似目标,通过调整顺序来控制优先级 - 设计时确保对象组代表不同的状态

Q7: 重试机制如何工作?

A: 如果所有对象组都检测失败,系统会: 1. 重新截图 2. 从对象组1开始重新进行完整的顺序检测 3. 重复此过程直到成功或达到重试上限

Q8: 如何优化多对象组的性能?

A: - 将最常见的情况放在前面,减少平均检测时间 - 避免创建过多不必要的对象组 - 合理设置ROI区域减少检测范围 - 使用精确的检测目标避免误匹配

故障排除

常见问题

1. 对象组检测都失败 - 检查模板图片或文字目标是否正确 - 验证ROI区域设置是否合适 - 调整匹配阈值 - 检查截图质量

2. 错误的对象组被匹配 - 调整对象组检测顺序(这是最重要的解决方案) - 将更特异的对象组放在前面,通用的放在后面 - 增加检测目标的特异性 - 缩小ROI识别区域 - 提高匹配阈值

3. 性能问题 - 减少不必要的对象组 - 优化ROI区域大小 - 减少重试次数 - 使用更精确的检测目标

调试技巧

  1. 查看日志: 观察各对象组的检测结果和耗时
  2. 单独测试: 先使用标准模式测试单个目标
  3. 逐步增加: 从少数对象组开始,逐步增加复杂度
  4. 截图验证: 检查截图内容是否包含预期的检测目标

总结

多对象组功能为复杂的自动化场景提供了强大而灵活的解决方案。通过合理的设计和配置,可以实现精确的状态判断和智能的流程分支,大大提升自动化脚本的实用性和可靠性。

关键要点: - 理解对象组的顺序检测机制 - 合理设计对象组的检测目标 - 充分利用独立的后续操作配置 - 注意性能优化和故障排除

正确使用多对象组功能可以让您的自动化脚本更加智能和稳定!