告别固定坐标!KeymouseGo图像识别功能让自动化操作更智能
你是否遇到过这样的困扰:录制好的鼠标点击脚本,换了个窗口位置就完全失效?或者因为软件界面更新,按钮位置变了导致自动化流程全部中断?作为一款类似按键精灵的自动化操作工具,KeymouseGo不仅能记录和回放鼠标键盘操作,更通过创新的图像识别功能突破了传统固定坐标的限制,让自动化操作变得更加灵活智能。
从固定坐标到视觉识别:自动化操作的进化
传统的鼠标录制工具普遍采用屏幕坐标定位方式,这种方式最大的问题是位置固定性。当窗口移动、分辨率变化或界面更新时,基于坐标的点击就会完全偏离目标。KeymouseGo的图像识别功能则通过识别屏幕上的图像特征来定位目标位置,实现了真正的视觉智能定位。
项目主界面:KeymouseGo.py实现了软件的核心交互逻辑,包括录制、回放和图像识别功能的入口。
图像识别功能的技术实现
KeymouseGo的图像识别功能主要通过插件系统实现,位于Plugin/目录下。插件接口定义在Plugin/Interface.py中,而插件管理器Plugin/Manager.py负责加载和调度各类插件,包括图像识别插件。
核心实现原理
图像识别功能的工作流程如下:
- 图像采集:通过屏幕截图获取当前界面图像
- 特征匹配:在截图中搜索与目标图像匹配的区域
- 坐标计算:将匹配区域的中心坐标作为点击位置
- 操作执行:通过事件系统执行鼠标点击操作
其中,事件执行部分由Event/UniversalEvents.py和Event/WindowsEvents.py实现,分别对应跨平台和Windows平台的事件处理。
关键代码解析
在事件处理类中,图像识别后的点击操作通过以下逻辑实现:
def execute(self, thd=None):
self.sleep(thd)
if self.event_type == 'EM':
# 检查是否需要图像识别
if isinstance(self.action[0], str) and self.action[0].startswith('image:'):
# 图像识别逻辑,获取目标坐标
target_image = self.action[0].split(':', 1)[1]
x, y = self.find_image_on_screen(target_image)
else:
# 传统坐标处理逻辑
x, y = self.action
# 执行鼠标操作
if self.action_type == 'mouse left down':
pyautogui.mouseDown(x, y, button='left')
# 其他鼠标事件处理...
如何使用图像识别功能
基本使用步骤
- 准备目标图像:截取需要识别的按钮或图标图像,保存为PNG格式
- 编写脚本:在脚本中使用
image:图像路径格式指定图像识别操作 - 运行脚本:KeymouseGo会自动加载图像并进行识别匹配
脚本示例
以下是一个使用图像识别功能的脚本示例:
{
scripts: [
// 等待2秒后,点击"确定"按钮(通过图像识别)
{
type: "event",
event_type: "EM",
delay: 2000,
action_type: "mouse left click",
action: ["image:ok_button.png", 0.8] // 0.8为匹配阈值
}
]
}
脚本语法详细说明可参考项目README.md中的"脚本语法说明"部分。
图像识别功能的应用场景
1. 动态界面自动化
当操作目标位置不固定时(如窗口可拖动、元素位置动态变化),图像识别能确保准确点击目标。
2. 多分辨率适配
在不同分辨率或缩放比例的屏幕上,图像识别依然能准确定位目标,解决了传统坐标方式的分辨率依赖问题。
3. 跨平台兼容
对于不同操作系统或软件版本的界面差异,图像识别提供了更鲁棒的定位方式,减少了平台适配的工作量。
4. 复杂界面操作
在包含大量相似元素的界面中(如表格、列表),图像识别可以精确定位特定元素,实现更复杂的自动化流程。
高级技巧与最佳实践
提高识别成功率的技巧
- 使用清晰的目标图像:确保截取的目标图像清晰,特征明显
- 适当调整匹配阈值:根据实际情况调整匹配阈值(0.6-0.9之间)
- 控制图像大小:目标图像不宜过大,建议只包含关键特征区域
- 处理动态变化:对于会变化的界面元素,使用多模板匹配提高鲁棒性
性能优化建议
- 对于需要频繁识别的场景,可以通过缓存屏幕截图减少重复采集
- 缩小识别区域,只在可能出现目标的区域进行搜索
- 适当降低匹配精度以提高识别速度
总结与展望
KeymouseGo的图像识别功能通过Plugin/Interface.py定义的插件接口,为自动化操作提供了更灵活、更智能的定位方式。它突破了传统固定坐标的限制,使得自动化脚本在面对界面变化时更加健壮。
随着功能的不断完善,未来图像识别将支持更多高级特性,如:
- 多图像组合识别
- 图像旋转和缩放匹配
- 文本识别(OCR)结合图像识别
如果你也在寻找一款既简单又强大的自动化操作工具,不妨尝试KeymouseGo的图像识别功能,体验视觉智能带来的自动化新可能!
项目地址:通过
git clone https://gitcode.com/gh_mirrors/ke/KeymouseGo获取完整代码
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00- QQwen3.5-397B-A17BQwen3.5 实现了重大飞跃,整合了多模态学习、架构效率、强化学习规模以及全球可访问性等方面的突破性进展,旨在为开发者和企业赋予前所未有的能力与效率。Jinja00
HY-Embodied-0.5这是一套专为现实世界具身智能打造的基础模型。该系列模型采用创新的混合Transformer(Mixture-of-Transformers, MoT) 架构,通过潜在令牌实现模态特异性计算,显著提升了细粒度感知能力。Jinja00
LongCat-AudioDiT-1BLongCat-AudioDiT 是一款基于扩散模型的文本转语音(TTS)模型,代表了当前该领域的最高水平(SOTA),它直接在波形潜空间中进行操作。00
LazyLLMLazyLLM是一款低代码构建多Agent大模型应用的开发工具,协助开发者用极低的成本构建复杂的AI应用,并可以持续的迭代优化效果。Python01
