FindPic 找图

文章目录
  1. 1. 功能
  2. 2. 语法
  3. 3. 参数
  4. 4. 返回值
  5. 5. 示例
  6. 6. 备注

功能

在区域范围内寻找指定图片, 返回找到的左上角坐标

语法

FindPic x1, y1, x2, y2, 图片路径, 相似度, 返回坐标x, 返回坐标y

参数

参数 数据类型 解释
x1 整数型 屏幕查找区域左上角坐标x
y1 整数型 屏幕查找区域左上角坐标y
x2 整数型 屏幕查找区域右下角坐标x
y2 整数型 屏幕查找区域右下角坐标y
图片 字符串 查找的图片路径, 附件的路径为“Attachment:\”, 图片要求24位的BMP格式, 可以用抓抓截取图片, 当图片的4个角落颜色相同时, 则将图片中这个颜色视为透明色
相似度 小数型 取0.5到1之间的小数, 数值越大越相似
返回坐标x 整数型变量 返回找到的坐标x, 如果没找到返回-1, 仅支持写变量名
返回坐标y 整数型变量 返回找到的坐标y, 如果没找到返回-1, 仅支持写变量名

返回值

示例

1
2
3
4
5
6
7
8
Dim x, y
//在范围0,0,1920,1080内以相似度0.9查找附件图片1.bmp, 结果保存在变量x,y中
FindPic 0, 0, 1920, 1080, "Attachment:\1.bmp", 0.9, x, y
If x > -1 Then
TracePrint "找到的图片坐标在" & intX & ", " & intY
Else
TracePrint "没找到图片"
End If
1
2
3
4
5
6
7
8
9
Dim x, y
PutAttachment "C:\", "1.bmp"
//在范围0,0,1920,1080内以相似度0.9查找硬盘上C:\1.bmp的图片, 结果保存在变量x,y中
FindPic 0, 0, 1920, 1080, "C:\1.bmp", 0.9, x, y
If x > -1 Then
TracePrint "找到的图片坐标在" & intX & ", " & intY
Else
TracePrint "没找到图片"
End If
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//高级例子
//介绍: 支持多个颜色的限时找色命令
//图片: 多张图片以|隔开, 直接写图片名时表示附件图片, 任何一张图片找到立即返回结果
//时长: 单位毫秒, 指定时间内循环查找, 找到立即返回
//返回: 返回数组数据, 格式为[x, y, 序号], 未找到返回[-1, -1, -1]
Function zmFindPic(x1, y1, x2, y2, 图片, 相似度, 时长)
Dim pics, i, x, y, t
zmFindPic = Array(-1, -1, -1)
pics = Split(图片, "|")
t = Plugin.Sys.GetTime()
Do
For i = 0 To UBound(pics)
If InStr(pics(i), "\") = 0 Then pics(i) = "Attachment:\" & pics(i)
FindPic x1, y1, x2, y2, pics(i), 相似度, x, y
If x > - 1 Then
zmFindPic = Array(x, y, i)
Exit Function
End If
Next
Delay 10
Loop While 时长 > Plugin.Sys.GetTime() - t
End Function

//调用例子1: 3秒内在指定范围内查找附件里1.bmp或2.bmp图片, 任何一个找到都返回结果
Dim ret
ret = zmFindPic(0, 0, 400, 500, "1.bmp|2.bmp", 0.9, 3000)
If ret(0) > - 1 Then
TracePrint "找到坐标x=" & ret(0) & ", 坐标y=" & ret(1) & ", 序号=" & ret(2)
Else
TracePrint "没有找到"
End If

//调用例子2: 3秒内在指定范围内查找附件里1.bmp或C盘里的2.bmp图片, 任何一个找到都返回结果
ret = zmFindPic(0, 0, 400, 500, "1.bmp|C:\2.bmp", 0.9, 3000)
If ret(0) > - 1 Then
TracePrint "找到坐标x=" & ret(0) & ", 坐标y=" & ret(1) & ", 序号=" & ret(2)
Else
TracePrint "没有找到"
End If

备注

  • 透明图是指当你图片4个角的颜色均相同时,则这张图片中所有这个颜色将被视为透明色,在找图匹配点过程中忽略这些点的颜色。
  • 在按键精灵2014.05版本中存在附件找图的BUG, 具体表现为FindPic找图命令使用附件图片进行查找时,会出现一次找到,一次找不到的问题。解决方法见: https://zimaoxy.com/b/t-744-1-1.html