函数名称
OpenCV.FindImgAll 找图返回全部结果
函数功能
使用OpenCV多尺度模板找图,返回全部结果
与FindPic的区别:
OpenCV找图:基于特征相似性的找图,允许一定几何形变或颜色差异,从而提高多分辨率容兼及抗干扰能力,容错率较高,但查找速度较慢、消耗cpu性能较大
由于允许相似性差异,查找的目标图片应尽量完整包含特征轮廓以减少特征相近的干扰数据
FindPic找图:基于遍历像素点颜色的找图,查找速度较快、消耗cpu性能较小,但容错率较低,适用于特征固定的静态场景
支持版本:安卓版v4.1.0、手机助手v4.4.0或以上版本
函数语法
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