测试设备:雷电模拟器 540*960 dpi 240
基本原理:
把滑块验证图片转化成0和1的二值化图片,也就是黑白图
原图
二值化后的图片
然后找滑块序列,匹配成功,就找到滑块位置了
代码分享:
Dim r,g,b,m,s,y,k,d,GetColor
dim p=0
Dim q=0
KeepCapture
For j= 195 To 479
For i = 21 To 518
GetColor = GetPixelColor(i,j)
ColorToRGB(GetColor,r,g,b)
y=r+g+b
If 384 - y > 50 Then
k =0
Else
k=1
End If
d=d&k
Next
s = InStr(260, d,
"100000000000000000000000000000000000000000000000000000000000000001")
m = InStr(260, d,
"10000000000000000000000000000000000000000000000000000000000000001")
If 0
p = p + 1
If p = 6 Then
Exit For
End If
End If
If 0
q = q + 1
If q = 6 Then
Exit For
End If
End If
d=""
Next
ReleaseCapture
TracePrint s,m
If s > m Then
For i = 0 To 5
TracePrint s+21
Next
else
For i = 0 To 5
TracePrint m+21
Next
End If
我在写这个代码的时候,发现每张图的滑块也有差别,一共找到两个滑块序列,所以后期我在代码优化上面做了两个序列值。
相较于我的实战第一课的过滑块方法,这种方法更加便捷,不用获取所有验证图的原图。
同时识别速度很快,不到1秒钟。