编程技术分享平台

网站首页 > 技术教程 正文

「按键精灵」过一个点击屏幕上指定图案的验证

xnh888 2024-10-22 18:06:48 技术教程 22 ℃ 0 评论

大家好,我是公众号3分钟学堂的郭立员,今天继续我们的按键精灵安卓版教程讲解,这一期我们来讲一下“过一个点击屏幕上指定图案验证”的案例。


验证的样子



验证通过机制


点击彩色图片,在画面中可以看到三类彩色内容:


①底图的红包领取图案

②上方的彩色动物

③“彩色图片”这几个文字


点击彩色动物就可以通过验证。


脚本思路分享


通过我们的分析,第二类的彩色动物是我们要点击的对象,但是我们画面中一共有三类彩色图片,那么必须把它们区分开。


步骤一:


脚本查找的范围限制在下图中的红框内,这样就可以避免彩色文字的影响。



步骤二:


排除底图红包图案的影响,这里可以用亮度来区分,因为底图颜色很暗,具体思路是:


(1)遍历像素获取整个区域的颜色值

(2)把颜色的rgb三个分量提取出来,然后加在一起得到颜色的“亮度”

(3)把亮度值和中性灰进行比较,亮度值小于中性灰的颜色点是底图,亮度值大于中性灰的颜色点就是动物图案上的颜色点。(中性灰是白色和黑色之间的中间值灰色)


脚本源码(二值化部分)


Dim c,d,e,f
KeepCapture
For j = 55 To 455
    d=""
    For i = 14 To 527
        c = GetPixelColor(i, j)
        e = ColorDiff("000000", c)
        If e > 384 Then 
            f = 1
        Else 
            f=0
        End If
        d=d&f
    Next
    TracePrint d
Next
ReleaseCapture


临时测试,变量定义的比较随意,大家可以忽略这个细节。


测试结果



输出有效坐标源码


Dim c,d,e,f
KeepCapture
For j = 55 To 455
    d=""
    For i = 14 To 527
        c = GetPixelColor(i, j)
        e = ColorDiff("000000", c)
        If e > 384 Then 
            f = 1
            TracePrint "有效坐标",i,j
        Else 
            f=0
        End If
//        d=d&f
    Next
Next
ReleaseCapture



彩色动物中有大量颜色点,这里面是所有有效的坐标值,可以任选一个点击。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表