11多对象组(图像识别/文字识别)
多对象组功能使用教程
概述
多对象组功能是一个高级的识别系统,允许用户为同一个动作配置多个独立的检测组。每个对象组都有自己的检测目标和处理逻辑,为复杂的自动化场景提供更精确和灵活的控制。
支持的动作类型
- 文字识别多对象组: 文字识别检测与点击
- 图像识别多对象组: 图像模板识别检测与点击
核心概念
对象组 vs 标准模式
| 特性 | 标准模式 | 多对象组模式 |
|---|---|---|
| 检测逻辑 | 识别多个目标,找到任意一个即成功 | 依次检测每个对象组,找到第一个匹配的对象组即成功 |
| 处理逻辑 | 统一的成功/失败处理 | 每个对象组独立的成功/失败处理 |
| 配置复杂度 | 简单 | 高级 |
| 适用场景 | 简单检测需求 | 复杂条件分支逻辑 |
工作原理
- 顺序检测: 按对象组的创建顺序依次检测(非并行执行)
- 优先匹配: 第一个成功匹配的对象组立即执行其配置的操作
- 立即停止: 一旦找到匹配的对象组,立即执行其操作并停止检测后续对象组
- 独立配置: 每个对象组有独立的检测参数和后续操作
- 无冲突问题: 由于是顺序执行,不存在多个对象组同时匹配的冲突
文字识别多对象组
使用场景
适合需要根据不同文字内容执行不同操作的场景:
- 游戏: 根据不同按钮文字(”开始游戏”、”继续游戏”、”设置”)执行不同逻辑
- 应用导航: 根据不同页面特征文字跳转到对应处理流程
- 状态判断: 根据状态提示文字(”成功”、”失败”、”等待”)执行相应操作
配置步骤
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区域大小 - 减少重试次数 - 使用更精确的检测目标
调试技巧
- 查看日志: 观察各对象组的检测结果和耗时
- 单独测试: 先使用标准模式测试单个目标
- 逐步增加: 从少数对象组开始,逐步增加复杂度
- 截图验证: 检查截图内容是否包含预期的检测目标
总结
多对象组功能为复杂的自动化场景提供了强大而灵活的解决方案。通过合理的设计和配置,可以实现精确的状态判断和智能的流程分支,大大提升自动化脚本的实用性和可靠性。
关键要点: - 理解对象组的顺序检测机制 - 合理设计对象组的检测目标 - 充分利用独立的后续操作配置 - 注意性能优化和故障排除
正确使用多对象组功能可以让您的自动化脚本更加智能和稳定!