测试设备:雷电模拟器 540*960 dpi 240
基本原理:
把滑块验证图片转化成0和1的二值化图片,也就是黑白图
![二值化过QQ滑块验证「源码分享」](http://p2.ttnews.xyz/loading.gif)
原图
![二值化过QQ滑块验证「源码分享」](http://p2.ttnews.xyz/loading.gif)
二值化后的图片
然后找滑块序列,匹配成功,就找到滑块位置了
代码分享:
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秒钟。
"閱讀更多 按鍵精靈郭立員 的文章
關鍵字: GetColor TracePrint 滑块