如何用AHK或Pulover Macro Recorder检测指定区域内图像出现次数?
屏幕特定区域内目标图像计数并保存为变量的实现方案(Pulover Macro Creator + AHK)
完全可行,Pulover Macro Creator(下称PMC)基于AutoHotkey(AHK)开发,内置图像识别与变量操作功能,刚好能满足你的需求。以下是具体实现方法,分可视化操作和代码解析两部分,适合新手理解:
一、用Pulover可视化操作实现
- 打开PMC新建宏,从左侧动作列表里找到「Image & Color」分类下的**Find Image (Multiple)**动作,添加到宏序列中:
- 点击「Select Region」,拖动鼠标框选你需要检测的屏幕特定区域;
- 点击「Capture Image」,截取你要计数的目标图像(建议截取无多余背景的纯目标区域,提升识别精度);
- 在「Options」栏勾选「Store count in variable」,输入变量名(比如
ImageCount,方便后续调用)。
- 添加输入动作:在「Input」分类下找到Send动作,输入框里填
%ImageCount%(AHK中用%包裹变量来读取其值),这样运行宏时就会把计数结果键入到当前激活的窗口。 - 保存宏后直接测试运行即可。
二、对应AHK代码解析(帮你理解底层逻辑)
PMC本质是帮你生成AHK代码,以下是核心逻辑的代码示例,你可以对照PMC生成的代码参考:
#SingleInstance Force ; 替换为你截取的目标图像路径(PMC会自动生成这个路径) TargetImage := "C:\Users\YourName\Documents\Pulover's Macro Creator\Images\target.png" ; 替换为你框选的检测区域坐标,格式:左上角X,左上角Y,右下角X,右下角Y DetectArea := "100,100,800,600" ImageCount := 0 ; 第一次查找图像 ImageSearch, FoundX, FoundY, %DetectArea%, *0 %TargetImage% ; 循环查找直到找不到为止,每找到一次计数+1 While ErrorLevel = 0 { ImageCount++ ; 从已找到图像的下一个位置继续查找,避免重复计数 ImageSearch, FoundX, FoundY, FoundX+1, FoundY+1, %DetectArea%, *0 %TargetImage% } ; 将计数结果输入到当前窗口 SendInput, %ImageCount%
关键参数说明:
*0:表示允许的颜色偏差值为0(即严格匹配颜色),如果识别不稳定,可以改成*20(允许20%颜色偏差);ErrorLevel:AHK内置变量,ImageSearch找到图像时返回0,没找到返回1,用来判断循环是否继续。
注意事项
- 目标图像尽量清晰,避免复杂背景,必要时可以用图像编辑工具去除多余背景;
- 检测区域范围越小,识别速度越快、精度越高;
- 如果目标图像有轻微变形,可以尝试添加
*Icon参数(ImageSearch命令后加*Icon),允许一定的形状偏差。
内容的提问来源于stack exchange,提问作者Yu Shu
相关产品推荐
相关产品推荐

