安卓/IOS按键精灵开发工具图像识别利器:OpenCV.FindImgAll 函数全面介绍与使用指南
在自动化脚本领域,按键精灵集成了强大的开源计算机视觉库——OpenCV,并提供了 OpenCV.FindImgAll 函数。这个函数彻底改变了按键精灵图像识别的能力,本文将带你全面了解并掌握它。
OpenCV.FindImgAll 是按键精灵调用其内置OpenCV模块的一个高级找图函数。它的核心功能是:在屏幕的指定区域内,查找所有与给定模板图片相匹配的位置,并返回一个包含所有匹配点坐标的数组。
与FindPic的区别:
OpenCV找图:基于特征相似性的找图,允许一定几何形变或颜色差异,从而提高多分辨率容兼及抗干扰能力,容错率较高,但查找速度较慢、消耗cpu性能较大
由于允许相似性差异,查找的目标图片应尽量完整包含特征轮廓以减少特征相近的干扰数据
FindPic找图:基于遍历像素点颜色的找图,查找速度较快、消耗cpu性能较小,但容错率较低,适用于特征固定的静态场景
函数名称
OpenCV.FindImgAll 找图返回全部结果
函数功能
使用OpenCV多尺度模板找图,返回全部结果
函数语法
result = OpenCV.FindImgAll(left, top, right, bottom, imgs, sim[, minScale, maxScale, stepCount])
函数参数
参数名
参数类型
是否必选
参数说明
left
int
是
识别区域的左上角x坐标
top
int
是
识别区域的左上角y坐标
right
int
是
识别区域的右下角x坐标
bottom
int
是
识别区域的右下角y坐标
imgs
string
是
要查找的图片,支持附件和本地路径图片,多个图片用“|”分隔,查找的图片越多耗时越长
sim
float
是
相似度阈值,过滤此相似度以下的结果,0到1之间的小数
minScale
float
否
目标图片最小缩放比例,默认为 0.5
maxScale
float
否
目标图片最大缩放比例,默认为 1.5
stepCount
int
否
缩放查找的步数,步数越大,精度越高,但耗时越长,默认为 5
函数返回
返回名
返回类型
返回说明
result
table
返回执行结果信息的键值表
result 包含的字段
字段名
字段类型
字段说明
code
int
执行函数的结果状态码,0为执行成功,非0为失败,失败原因查看msg字段
msg
string
执行结果的描述,失败则描述具体的失败原因
data
table
返回找图结果数组键值表,如存在n个结果,则table长度为n
data 包含的字段
字段名
字段类型
字段说明
x
int
识别到目标目标的左上角x坐标
y
int
识别到目标目标的左上角y坐标
w
int
识别到目标图片范围的宽度
h
int
识别到目标图片范围的高度
pic
string
识别到的目标图片名称(含路径)
score
float
识别到目标图片的相似度,0到1之间的小数
代码范例
Dim dirPath = GetSdcardDir() & "/test/",picPath = dirPath & "000.png"
Dim ret,ranTime
PutAttachment dirPath,"*"
TracePrint dir.Exist(picPath)
ranTime = TickCount()
ret = OpenCV.FindImgAll(0, 0, 0, 0, picPath & "|Attachment:111.png|Attachment:222.png", 0.8, 0.9, 1.2, 10)
TracePrint TickCount() - ranTime
If ret["code"] = 0 Then
For i = 1 to len(ret["data"])
TracePrint "识别到图片:" & ret["data"][i]["pic"] &_
",左上角x坐标:" & ret["data"][i]["x"] &_
",左上角y坐标:" & ret["data"][i]["y"] &_
",区域宽:" & ret["data"][i]["w"] &_
",区域高:" & ret["data"][i]["h"] &_
",可信度:" & ret["data"][i]["score"]
Next
Else
TracePrint ret["msg"]
End If
优势与注意事项
优势:
多目标查找:核心优势,一键获取所有结果。
速度快:OpenCV算法优化程度高,远高于传统FindPic。
精度高:支持透明通道和强大的匹配算法,抗干扰能力强。
功能灵活:提供两种返回模式,适应不同场景。
注意事项:
插件依赖:脚本需附带或确保系统有正确的OpenCV插件。
相似度权衡:sim值设置过高可能找不到目标,过低可能找到错误目标,需要反复测试。
性能考量:查找区域越大,耗时越长。务必精确指定查找范围。
OpenCV.FindImgAll 是按键精灵迈向“智能自动化”的关键一步。它将强大的开源视觉库的力量交到了脚本开发者手中,使得开发复杂、稳定、高效的图形化界面自动化脚本成为可能。
无论是游戏中的批量拾取、办公软件中的批量操作,还是应用程序中的多项选择,只要你需要与屏幕上的多个相同元素进行交互,OpenCV.FindImgAll 都是你的不二之选。掌握它,让你的脚本效能提升一个档次!
2025-08-28